def test_unhandled_types(self): """Should raise error, not return a generator.""" with self.assertRaises(TypeError): get_reader(object()) with self.assertRaises(TypeError): get_reader([object(), object()])
def test_csv(self): reader = get_reader('sample_text_utf8.csv', encoding='utf-8') expected = [ ['col1', 'col2'], ['utf8', chr(0x003b1)], # chr(0x003b1) -> α ] self.assertEqual(list(reader), expected) reader = get_reader('sample_text_iso88591.csv', encoding='iso8859-1') expected = [ ['col1', 'col2'], ['iso88591', chr(0xe6)], # chr(0xe6) -> æ ] self.assertEqual(list(reader), expected) path = 'sample_text_utf8.csv' encoding = 'utf-8' def open_file(path, encoding): # <- Helper function. if PY2: return open(path, 'rb') return open(path, 'rt', encoding=encoding, newline='') with open_file(path, encoding) as fh: reader = get_reader(fh, encoding=encoding) expected = [ ['col1', 'col2'], ['utf8', chr(0x003b1)], # chr(0x003b1) -> α ] self.assertEqual(list(reader), expected)
def test_readerlike_wrapping(self): """Reader-like lists should simply be wrapped.""" readerlike = [['col1', 'col2'], [1, 'a'], [2, 'b']] reader = get_reader(readerlike) self.assertEqual(list(reader), readerlike) readerlike = [('col1', 'col2'), (1, 'a'), (2, 'b')] reader = get_reader(readerlike) self.assertEqual(list(reader), readerlike)
def test_datatest(self): select = datatest.Selector([['A', 'B'], ['x', 1], ['y', 2]]) query = select('A') reader = get_reader(query) self.assertEqual(list(reader), [['A'], ['x'], ['y']]) select = datatest.Selector([['A', 'B'], ['x', 1], ['y', 2]]) query = select({'A': 'B'}) reader = get_reader(query) self.assertEqual(list(reader), [['A', 'B'], ['x', 1], ['y', 2]])
def test_datatest(self): select = datatest.Selector([['A', 'B'], ['x', 1], ['y', 2]]) query = select(('A', 'B')) reader = get_reader(query) # <- datatest.Query self.assertEqual(list(reader), [('A', 'B'), ('x', 1), ('y', 2)]) reader = get_reader(select) # <- datatest.Selector self.assertEqual(list(reader), [('A', 'B'), ('x', 1), ('y', 2)]) result = select({'A': 'B'}).execute() reader = get_reader(query) # <- datatest.Result self.assertEqual(list(reader), [('A', 'B'), ('x', 1), ('y', 2)])
def test_excel(self): reader = get_reader('sample_excel2007.xlsx') expected = [ ['col1', 'col2'], ['excel2007', 1], ] self.assertEqual(list(reader), expected) reader = get_reader('sample_excel1997.xls') expected = [ ['col1', 'col2'], ['excel1997', 1], ] self.assertEqual(list(reader), expected)
def test_dbf(self): reader = get_reader('sample_dbase.dbf') expected = [ ['COL1', 'COL2'], ['dBASE', 1], ] self.assertEqual(list(reader), expected)
def test_namedtuples(self): ntup = namedtuple('ntup', ['col1', 'col2']) records = [ntup(1, 'a'), ntup(2, 'b')] reader = get_reader(records) expected = [('col1', 'col2'), (1, 'a'), (2, 'b')] self.assertEqual(list(reader), expected)
def test_dicts(self): records = [ { 'col1': 'first' }, { 'col1': 'second' }, ] reader = get_reader(records) expected = [['col1'], ['first'], ['second']] self.assertEqual(list(reader), expected)
def test_pandas(self): df = pandas.DataFrame({ 'col1': (1, 2, 3), 'col2': ('a', 'b', 'c'), }) reader = get_reader(df, index=False) expected = [ ['col1', 'col2'], [1, 'a'], [2, 'b'], [3, 'c'], ] self.assertEqual(list(reader), expected)