Example #1
0
    def test_get_primary_order(self):
        sort_keys = mod.SortKeysConfig(['1sf', '2ir'])
        assert sort_keys.get_primary_order() == 'forward'

        sort_keys = mod.SortKeysConfig(['1sr', '2sr'])
        assert sort_keys.get_primary_order() == 'reverse'

        sort_keys = mod.SortKeysConfig(['1ir'])
        assert sort_keys.get_primary_order() == 'reverse'
Example #2
0
    def test_multi_orders(self):
        sort_keys = mod.SortKeysConfig(['1sf', '2sr'])
        assert sort_keys.multi_orders() is True

        sort_keys = mod.SortKeysConfig(['1sf', '2sf'])
        assert sort_keys.multi_orders() is False

        sort_keys = mod.SortKeysConfig(['1sf'])
        assert sort_keys.multi_orders() is False

        sort_keys = mod.SortKeysConfig(['0if', '1sr'])
        assert sort_keys.multi_orders() is True
Example #3
0
 def test_header(self):
     self.fqfn = create_test_file(self.temp_dir, header=True)
     self.dialect.has_header = True
     out_fqfn = self.fqfn + '.sorted'
     sort_keys_config = mod.SortKeysConfig(['0if'])
     sorter = mod.CSVPythonSorter(self.fqfn,
                                  out_fqfn,
                                  sort_keys_config,
                                  self.dialect,
                                  dedupe=True)
     stats = sorter.sort_file()
     pp(sorter.stats)
     sorter.close()
     with open(out_fqfn, newline='') as buf:
         reader = csv.reader(buf)
         data = list(reader)
     pp(data)
     assert sorter.stats['recs_read'] == 5
     assert sorter.stats['recs_written'] == 5
     assert sorter.stats['recs_deduped'] == 0
     assert data[0][0] == 'num'
     assert data[1][0] == '1'
     assert data[2][0] == '2'
     assert data[3][0] == '3'
     assert data[4][0] == '4'
Example #4
0
    def test_get_sort_values_happy_path(self):
        self.fqfn = create_test_file(self.temp_dir, header=True)
        self.dialect.has_header = True
        out_fqfn = self.fqfn + '.sorted'
        sort_keys_config = mod.SortKeysConfig(['0sf'])
        sorter = mod.CSVPythonSorter(self.fqfn,
                                     out_fqfn,
                                     sort_keys_config,
                                     self.dialect,
                                     dedupe=True)

        rec = ['foo', 3, 'bar', 9]
        primary_order = 'forward'
        assert sorter._get_sort_values(sort_keys_config.key_fields, rec,
                                       primary_order) == ['foo']
Example #5
0
 def test_sort_file_reverse(self):
     out_fqfn = self.fqfn + '.sorted'
     sort_keys_config = mod.SortKeysConfig(['0ir'])
     sorter = mod.CSVPythonSorter(self.fqfn,
                                  out_fqfn,
                                  sort_keys_config,
                                  self.dialect,
                                  dedupe=False)
     stats = sorter.sort_file()
     pp(sorter.stats)
     sorter.close()
     with open(out_fqfn, newline='') as buf:
         reader = csv.reader(buf)
         data = list(reader)
     pp(data)
     assert data[0][0] == '4'
     assert data[1][0] == '3'
     assert data[2][0] == '2'
     assert data[3][0] == '1'
Example #6
0
 def test_two_keys(self):
     sort_keys = mod.SortKeysConfig(['1sf', '2ir'])
     assert sort_keys.key_fields == [
         mod.SortKeyRecord('1sf'),
         mod.SortKeyRecord('2ir')
     ]
Example #7
0
 def test_one_key(self):
     sort_keys = mod.SortKeysConfig(['1sf'])
     assert sort_keys.key_fields == [mod.SortKeyRecord('1sf')]
Example #8
0
 def test_get_sort_fields(self):
     sort_keys = mod.SortKeysConfig(['1sf', '2ir'])
     assert sort_keys.get_sort_fields() == [0, 1]