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'