Exemplo n.º 1
0
    def test_assign_two_sequences_to_4fields(self):
        """ This shows that a single sequence can be used on multiple files without
            creating duplicates.
            It also shows that multiple sequences can be made from multiple sources.
        """
        old_rec = ['0', 'o1', 'o2', 'o3']
        new_rec = ['0', 'n1', 'n2', 'n3']
        cur_rec = ['', 'b', 'c', 'd']
        dass = mod.DeltaAssignments()
        dass.set_assignment('insert', 0, 'sequence', None, 'old', 0)
        dass.set_assignment('insert', 2, 'sequence', None, 'old', 2)
        dass.set_assignment('chgnew', 0, 'sequence', None, 'old', 0)
        dass.set_assignment('chgnew', 2, 'sequence', None, 'old', 2)

        fqfn = pjoin(self.temp_dir, 'old.csv')
        with open(fqfn, 'w') as f:
            f.write('3,o,2,ooo\n')
            f.write('5,o,4,ooo\n')
            f.write('5,o,6,ooo\n')

        dass.set_sequence_starts(self.dialect, fqfn)
        print('---- post sequence_starts seq dict: -----')
        print(dass.seq)
        print('---- post sequence_starts print-done: -----')

        dass.assign('insert', cur_rec, old_rec, new_rec)
        assert cur_rec == ['6', 'b', '7', 'd']

        dass.assign('chgnew', cur_rec, old_rec, new_rec)
        assert cur_rec == ['7', 'b', '8', 'd']
Exemplo n.º 2
0
 def test_assign_copy_newfield_to_rec(self):
     old_rec = ['o0', 'o1', 'o2', 'o3']
     new_rec = ['n0', 'n1', 'n2', 'n3']
     cur_rec = ['a', 'b', 'c', 'd']
     dass = mod.DeltaAssignments()
     dass.set_assignment('chgold', 2, 'copy', None, 'new', 1)
     dass.assign('chgold', cur_rec, old_rec, new_rec)
     assert cur_rec == ['a', 'b', 'n1', 'd']
Exemplo n.º 3
0
 def test_assign_literal_to_rec(self):
     old_rec = ['o0', 'o1', 'o2', 'o3']
     new_rec = ['n0', 'n1', 'n2', 'n3']
     cur_rec = ['a', 'b', 'c', 'd']
     dass = mod.DeltaAssignments()
     dass.set_assignment('insert', 2, 'literal', 'foo')
     dass.assign('insert', cur_rec, old_rec, new_rec)
     assert cur_rec == ['a', 'b', 'foo', 'd']
Exemplo n.º 4
0
 def test_assign_copy_oldfield_empty(self):
     old_rec = []
     new_rec = ['n0', 'n1', 'n2', 'n3']
     cur_rec = ['a', 'b', 'c', 'd']
     dass = mod.DeltaAssignments()
     dass.set_assignment('insert', 2, 'copy', None, 'old', 1)
     with pytest.raises(SystemExit):
         dass.assign('insert', cur_rec, old_rec, new_rec)
Exemplo n.º 5
0
 def test_assign_specialvalue_to_rec(self):
     old_rec = ['o0', 'o1', 'o2', 'o3']
     new_rec = ['n0', 'n1', 'n2', 'n3']
     cur_rec = ['a', 'b', 'c', 'd']
     dass = mod.DeltaAssignments()
     dass.set_special_values('batchid', '9999')
     dass.set_assignment('insert', 1, 'special', 'batchid', None, None)
     dass.assign('insert', cur_rec, old_rec, new_rec)
     assert cur_rec == ['a', '9999', 'c', 'd']
Exemplo n.º 6
0
 def test_set_assignments(self):
     dass = mod.DeltaAssignments()
     dass.set_assignment('insert', 3, 'literal', 'foo')
     assert dass.assignments['insert'][3] == {
         'src_type': 'literal',
         'src_val': 'foo',
         'src_file': None,
         'src_field': None
     }
     dass.set_assignment('chgold', 2, 'copy', src_file='new', src_field=2)
     assert dass.assignments['chgold'][2] == {
         'src_type': 'copy',
         'src_val': None,
         'src_file': 'new',
         'src_field': 2
     }
Exemplo n.º 7
0
 def test_set_assignment_args(self):
     dass = mod.DeltaAssignments()
     with pytest.raises(ValueError):
         dass.set_assignment(None, None, None, None)
     with pytest.raises(ValueError):
         dass.set_assignment('foo', None, None, None)
     with pytest.raises(ValueError):
         dass.set_assignment('insert', 'foo', 'bar', None)
     with pytest.raises(ValueError):
         dass.set_assignment('delete', 3, 'literal', None)
     assert dass.set_assignment('insert', 3, 'literal', 'foo') is None
     assert dass.set_assignment('delete', 3, 'literal', 'foo') is None
     assert dass.set_assignment('chgold', 3, 'literal', 'foo') is None
     assert dass.set_assignment('chgnew', 3, 'literal', 'foo') is None
     assert dass.set_assignment(
         'chgnew', 3, 'copy', src_file='old', src_field=5) is None
     assert dass.set_assignment('chgnew', 3, 'literal', 'foo') is None
Exemplo n.º 8
0
    def test_assign_sequences_empty_old(self):
        old_rec = None
        new_rec = ['0', 'n1', 'n2', 'n3']
        cur_rec = ['', 'b', 'c', 'd']
        dass = mod.DeltaAssignments()
        dass.set_assignment('insert', 0, 'sequence', None, 'old', 0)

        fqfn = pjoin(self.temp_dir, 'old.csv')
        with open(fqfn, 'w') as f:
            pass

        dass.set_sequence_starts(self.dialect, fqfn)
        print('---- post sequence_starts seq dict: -----')
        print(dass.seq)
        print('---- post sequence_starts print-done: -----')

        dass.assign('insert', cur_rec, old_rec, new_rec)
        assert cur_rec == ['1', 'b', 'c', 'd']