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'
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
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'
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']
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'
def test_two_keys(self): sort_keys = mod.SortKeysConfig(['1sf', '2ir']) assert sort_keys.key_fields == [ mod.SortKeyRecord('1sf'), mod.SortKeyRecord('2ir') ]
def test_one_key(self): sort_keys = mod.SortKeysConfig(['1sf']) assert sort_keys.key_fields == [mod.SortKeyRecord('1sf')]
def test_get_sort_fields(self): sort_keys = mod.SortKeysConfig(['1sf', '2ir']) assert sort_keys.get_sort_fields() == [0, 1]