diff options
Diffstat (limited to 'test_tablib.py')
| -rwxr-xr-x | test_tablib.py | 606 |
1 files changed, 303 insertions, 303 deletions
diff --git a/test_tablib.py b/test_tablib.py index 15630f2..e4a4d11 100755 --- a/test_tablib.py +++ b/test_tablib.py @@ -12,452 +12,452 @@ import tablib class TablibTestCase(unittest.TestCase): - """Tablib test cases.""" + """Tablib test cases.""" - def setUp(self): - """Create simple data set with headers.""" + def setUp(self): + """Create simple data set with headers.""" - global data, book + global data, book - data = tablib.Dataset() - book = tablib.Databook() + data = tablib.Dataset() + book = tablib.Databook() - self.headers = ('first_name', 'last_name', 'gpa') - self.john = ('John', 'Adams', 90) - self.george = ('George', 'Washington', 67) - self.tom = ('Thomas', 'Jefferson', 50) + self.headers = ('first_name', 'last_name', 'gpa') + self.john = ('John', 'Adams', 90) + self.george = ('George', 'Washington', 67) + self.tom = ('Thomas', 'Jefferson', 50) - self.founders = tablib.Dataset(headers=self.headers) - self.founders.append(self.john) - self.founders.append(self.george) - self.founders.append(self.tom) + self.founders = tablib.Dataset(headers=self.headers) + self.founders.append(self.john) + self.founders.append(self.george) + self.founders.append(self.tom) - def tearDown(self): - """Teardown.""" - pass + def tearDown(self): + """Teardown.""" + pass - def test_empty_append(self): - """Verify append() correctly adds tuple with no headers.""" - new_row = (1, 2, 3) - data.append(new_row) + def test_empty_append(self): + """Verify append() correctly adds tuple with no headers.""" + new_row = (1, 2, 3) + data.append(new_row) - # Verify width/data - self.assertTrue(data.width == len(new_row)) - self.assertTrue(data[0] == new_row) + # Verify width/data + self.assertTrue(data.width == len(new_row)) + self.assertTrue(data[0] == new_row) - def test_empty_append_with_headers(self): - """Verify append() correctly detects mismatch of number of - headers and data. - """ - data.headers = ['first', 'second'] - new_row = (1, 2, 3, 4) + def test_empty_append_with_headers(self): + """Verify append() correctly detects mismatch of number of + headers and data. + """ + data.headers = ['first', 'second'] + new_row = (1, 2, 3, 4) - self.assertRaises(tablib.InvalidDimensions, data.append, new_row) + self.assertRaises(tablib.InvalidDimensions, data.append, new_row) - def test_add_column(self): - """Verify adding column works with/without headers.""" + def test_add_column(self): + """Verify adding column works with/without headers.""" - data.append(['kenneth']) - data.append(['bessie']) + data.append(['kenneth']) + data.append(['bessie']) - new_col = ['reitz', 'monke'] + new_col = ['reitz', 'monke'] - data.append(col=new_col) + data.append(col=new_col) - self.assertEquals(data[0], ('kenneth', 'reitz')) - self.assertEquals(data.width, 2) + self.assertEquals(data[0], ('kenneth', 'reitz')) + self.assertEquals(data.width, 2) - # With Headers - data.headers = ('fname', 'lname') - new_col = [21, 22] - data.append(col=new_col, header='age') + # With Headers + data.headers = ('fname', 'lname') + new_col = [21, 22] + data.append(col=new_col, header='age') - self.assertEquals(data['age'], new_col) + self.assertEquals(data['age'], new_col) - def test_add_column_no_data_no_headers(self): - """Verify adding new column with no headers.""" + def test_add_column_no_data_no_headers(self): + """Verify adding new column with no headers.""" - new_col = ('reitz', 'monke') + new_col = ('reitz', 'monke') - data.append(col=new_col) + data.append(col=new_col) - self.assertEquals(data[0], tuple([new_col[0]])) - self.assertEquals(data.width, 1) - self.assertEquals(data.height, len(new_col)) + self.assertEquals(data[0], tuple([new_col[0]])) + self.assertEquals(data.width, 1) + self.assertEquals(data.height, len(new_col)) - def test_add_callable_column(self): - """Verify adding column with values specified as callable.""" - new_col = [lambda x: x[0]] - self.founders.append(col=new_col, header='first_again') + def test_add_callable_column(self): + """Verify adding column with values specified as callable.""" + new_col = [lambda x: x[0]] + self.founders.append(col=new_col, header='first_again') # -# self.assertTrue(map(lambda x: x[0] == x[-1], self.founders)) +# self.assertTrue(map(lambda x: x[0] == x[-1], self.founders)) - def test_header_slicing(self): - """Verify slicing by headers.""" + def test_header_slicing(self): + """Verify slicing by headers.""" - self.assertEqual(self.founders['first_name'], - [self.john[0], self.george[0], self.tom[0]]) - self.assertEqual(self.founders['last_name'], - [self.john[1], self.george[1], self.tom[1]]) - self.assertEqual(self.founders['gpa'], - [self.john[2], self.george[2], self.tom[2]]) + self.assertEqual(self.founders['first_name'], + [self.john[0], self.george[0], self.tom[0]]) + self.assertEqual(self.founders['last_name'], + [self.john[1], self.george[1], self.tom[1]]) + self.assertEqual(self.founders['gpa'], + [self.john[2], self.george[2], self.tom[2]]) - def test_data_slicing(self): - """Verify slicing by data.""" + def test_data_slicing(self): + """Verify slicing by data.""" - # Slice individual rows - self.assertEqual(self.founders[0], self.john) - self.assertEqual(self.founders[:1], [self.john]) - self.assertEqual(self.founders[1:2], [self.george]) - self.assertEqual(self.founders[-1], self.tom) - self.assertEqual(self.founders[3:], []) + # Slice individual rows + self.assertEqual(self.founders[0], self.john) + self.assertEqual(self.founders[:1], [self.john]) + self.assertEqual(self.founders[1:2], [self.george]) + self.assertEqual(self.founders[-1], self.tom) + self.assertEqual(self.founders[3:], []) - # Slice multiple rows - self.assertEqual(self.founders[:], [self.john, self.george, self.tom]) - self.assertEqual(self.founders[0:2], [self.john, self.george]) - self.assertEqual(self.founders[1:3], [self.george, self.tom]) - self.assertEqual(self.founders[2:], [self.tom]) + # Slice multiple rows + self.assertEqual(self.founders[:], [self.john, self.george, self.tom]) + self.assertEqual(self.founders[0:2], [self.john, self.george]) + self.assertEqual(self.founders[1:3], [self.george, self.tom]) + self.assertEqual(self.founders[2:], [self.tom]) - def test_delete(self): - """Verify deleting from dataset works.""" + def test_delete(self): + """Verify deleting from dataset works.""" - # Delete from front of object - del self.founders[0] - self.assertEqual(self.founders[:], [self.george, self.tom]) + # Delete from front of object + del self.founders[0] + self.assertEqual(self.founders[:], [self.george, self.tom]) - # Verify dimensions, width should NOT change - self.assertEqual(self.founders.height, 2) - self.assertEqual(self.founders.width, 3) + # Verify dimensions, width should NOT change + self.assertEqual(self.founders.height, 2) + self.assertEqual(self.founders.width, 3) - # Delete from back of object - del self.founders[1] - self.assertEqual(self.founders[:], [self.george]) + # Delete from back of object + del self.founders[1] + self.assertEqual(self.founders[:], [self.george]) - # Verify dimensions, width should NOT change - self.assertEqual(self.founders.height, 1) - self.assertEqual(self.founders.width, 3) + # Verify dimensions, width should NOT change + self.assertEqual(self.founders.height, 1) + self.assertEqual(self.founders.width, 3) - # Delete from invalid index - self.assertRaises(IndexError, self.founders.__delitem__, 3) + # Delete from invalid index + self.assertRaises(IndexError, self.founders.__delitem__, 3) - def test_csv_export(self): - """Verify exporting dataset object as CSV.""" + def test_csv_export(self): + """Verify exporting dataset object as CSV.""" - # Build up the csv string with headers first, followed by each row - csv = '' - for col in self.headers: - csv += col + ',' + # Build up the csv string with headers first, followed by each row + csv = '' + for col in self.headers: + csv += col + ',' - csv = csv.strip(',') + '\r\n' + csv = csv.strip(',') + '\r\n' - for founder in self.founders: - for col in founder: - csv += str(col) + ',' - csv = csv.strip(',') + '\r\n' + for founder in self.founders: + for col in founder: + csv += str(col) + ',' + csv = csv.strip(',') + '\r\n' - self.assertEqual(csv, self.founders.csv) + self.assertEqual(csv, self.founders.csv) - def test_tsv_export(self): - """Verify exporting dataset object as CSV.""" + def test_tsv_export(self): + """Verify exporting dataset object as CSV.""" - # Build up the csv string with headers first, followed by each row - tsv = '' - for col in self.headers: - tsv += col + '\t' + # Build up the csv string with headers first, followed by each row + tsv = '' + for col in self.headers: + tsv += col + '\t' - tsv = tsv.strip('\t') + '\r\n' + tsv = tsv.strip('\t') + '\r\n' - for founder in self.founders: - for col in founder: - tsv += str(col) + '\t' - tsv = tsv.strip('\t') + '\r\n' + for founder in self.founders: + for col in founder: + tsv += str(col) + '\t' + tsv = tsv.strip('\t') + '\r\n' - self.assertEqual(tsv, self.founders.tsv) + self.assertEqual(tsv, self.founders.tsv) - def test_html_export(self): + def test_html_export(self): - """HTML export""" + """HTML export""" - html = markup.page() - html.table.open() - html.thead.open() + html = markup.page() + html.table.open() + html.thead.open() - html.tr(markup.oneliner.th(self.founders.headers)) - html.thead.close() + html.tr(markup.oneliner.th(self.founders.headers)) + html.thead.close() - for founder in self.founders: + for founder in self.founders: - html.tr(markup.oneliner.td(founder)) + html.tr(markup.oneliner.td(founder)) - html.table.close() - html = str(html) + html.table.close() + html = str(html) - self.assertEqual(html, self.founders.html) + self.assertEqual(html, self.founders.html) - def test_unicode_append(self): - """Passes in a single unicode charecter and exports.""" + def test_unicode_append(self): + """Passes in a single unicode charecter and exports.""" - new_row = ('å', 'é') - data.append(new_row) + new_row = ('å', 'é') + data.append(new_row) - data.json - data.yaml - data.csv - data.tsv - data.xls + data.json + data.yaml + data.csv + data.tsv + data.xls - def test_book_export_no_exceptions(self): - """Test that varoius exports don't error out.""" + def test_book_export_no_exceptions(self): + """Test that varoius exports don't error out.""" - book = tablib.Databook() - book.add_sheet(data) + book = tablib.Databook() + book.add_sheet(data) - book.json - book.yaml - book.xls + book.json + book.yaml + book.xls - def test_json_import_set(self): - """Generate and import JSON set serialization.""" - data.append(self.john) - data.append(self.george) - data.headers = self.headers + def test_json_import_set(self): + """Generate and import JSON set serialization.""" + data.append(self.john) + data.append(self.george) + data.headers = self.headers - _json = data.json + _json = data.json - data.json = _json + data.json = _json - self.assertEqual(_json, data.json) + self.assertEqual(_json, data.json) - def test_json_import_book(self): - """Generate and import JSON book serialization.""" - data.append(self.john) - data.append(self.george) - data.headers = self.headers + def test_json_import_book(self): + """Generate and import JSON book serialization.""" + data.append(self.john) + data.append(self.george) + data.headers = self.headers - book.add_sheet(data) - _json = book.json + book.add_sheet(data) + _json = book.json - book.json = _json + book.json = _json - self.assertEqual(_json, book.json) + self.assertEqual(_json, book.json) - def test_yaml_import_set(self): - """Generate and import YAML set serialization.""" - data.append(self.john) - data.append(self.george) - data.headers = self.headers + def test_yaml_import_set(self): + """Generate and import YAML set serialization.""" + data.append(self.john) + data.append(self.george) + data.headers = self.headers - _yaml = data.yaml + _yaml = data.yaml - data.yaml = _yaml + data.yaml = _yaml - self.assertEqual(_yaml, data.yaml) + self.assertEqual(_yaml, data.yaml) - def test_yaml_import_book(self): - """Generate and import YAML book serialization.""" - data.append(self.john) - data.append(self.george) - data.headers = self.headers + def test_yaml_import_book(self): + """Generate and import YAML book serialization.""" + data.append(self.john) + data.append(self.george) + data.headers = self.headers - book.add_sheet(data) - _yaml = book.yaml + book.add_sheet(data) + _yaml = book.yaml - book.yaml = _yaml + book.yaml = _yaml - self.assertEqual(_yaml, book.yaml) + self.assertEqual(_yaml, book.yaml) - def test_csv_import_set(self): - """Generate and import CSV set serialization.""" - data.append(self.john) - data.append(self.george) - data.headers = self.headers + def test_csv_import_set(self): + """Generate and import CSV set serialization.""" + data.append(self.john) + data.append(self.george) + data.headers = self.headers - _csv = data.csv + _csv = data.csv - data.csv = _csv + data.csv = _csv - self.assertEqual(_csv, data.csv) + self.assertEqual(_csv, data.csv) - def test_tsv_import_set(self): - """Generate and import TSV set serialization.""" - data.append(self.john) - data.append(self.george) - data.headers = self.headers + def test_tsv_import_set(self): + """Generate and import TSV set serialization.""" + data.append(self.john) + data.append(self.george) + data.headers = self.headers - _tsv = data.tsv + _tsv = data.tsv - data.tsv = _tsv + data.tsv = _tsv - self.assertEqual(_tsv, data.tsv) + self.assertEqual(_tsv, data.tsv) - def test_csv_format_detect(self): - """Test CSV format detection.""" + def test_csv_format_detect(self): + """Test CSV format detection.""" - _csv = ( - '1,2,3\n' - '4,5,6\n' - '7,8,9\n' - ) - _bunk = ( - '¡¡¡¡¡¡¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' - ) + _csv = ( + '1,2,3\n' + '4,5,6\n' + '7,8,9\n' + ) + _bunk = ( + '¡¡¡¡¡¡¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' + ) - self.assertTrue(tablib.formats.csv.detect(_csv)) - self.assertFalse(tablib.formats.csv.detect(_bunk)) + self.assertTrue(tablib.formats.csv.detect(_csv)) + self.assertFalse(tablib.formats.csv.detect(_bunk)) - def test_tsv_format_detect(self): - """Test TSV format detection.""" + def test_tsv_format_detect(self): + """Test TSV format detection.""" - _tsv = ( - '1\t2\t3\n' - '4\t5\t6\n' - '7\t8\t9\n' - ) - _bunk = ( - '¡¡¡¡¡¡¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' - ) + _tsv = ( + '1\t2\t3\n' + '4\t5\t6\n' + '7\t8\t9\n' + ) + _bunk = ( + '¡¡¡¡¡¡¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' + ) - self.assertTrue(tablib.formats.tsv.detect(_tsv)) - self.assertFalse(tablib.formats.tsv.detect(_bunk)) + self.assertTrue(tablib.formats.tsv.detect(_tsv)) + self.assertFalse(tablib.formats.tsv.detect(_bunk)) - def test_json_format_detect(self): - """Test JSON format detection.""" + def test_json_format_detect(self): + """Test JSON format detection.""" - _json = '[{"last_name": "Adams","age": 90,"first_name": "John"}]' - _bunk = ( - '¡¡¡¡¡¡¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' - ) + _json = '[{"last_name": "Adams","age": 90,"first_name": "John"}]' + _bunk = ( + '¡¡¡¡¡¡¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' + ) - self.assertTrue(tablib.formats.json.detect(_json)) - self.assertFalse(tablib.formats.json.detect(_bunk)) + self.assertTrue(tablib.formats.json.detect(_json)) + self.assertFalse(tablib.formats.json.detect(_bunk)) - def test_yaml_format_detect(self): - """Test YAML format detection.""" + def test_yaml_format_detect(self): + """Test YAML format detection.""" - _yaml = '- {age: 90, first_name: John, last_name: Adams}' - _bunk = ( - '¡¡¡¡¡¡---///\n\n\n¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' - ) + _yaml = '- {age: 90, first_name: John, last_name: Adams}' + _bunk = ( + '¡¡¡¡¡¡---///\n\n\n¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' + ) - self.assertTrue(tablib.formats.yaml.detect(_yaml)) - self.assertFalse(tablib.formats.yaml.detect(_bunk)) + self.assertTrue(tablib.formats.yaml.detect(_yaml)) + self.assertFalse(tablib.formats.yaml.detect(_bunk)) - def test_auto_format_detect(self): - """Test auto format detection.""" + def test_auto_format_detect(self): + """Test auto format detection.""" - _yaml = '- {age: 90, first_name: John, last_name: Adams}' - _json = '[{"last_name": "Adams","age": 90,"first_name": "John"}]' - _csv = '1,2,3\n4,5,6\n7,8,9\n' - _bunk = '¡¡¡¡¡¡---///\n\n\n¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' + _yaml = '- {age: 90, first_name: John, last_name: Adams}' + _json = '[{"last_name": "Adams","age": 90,"first_name": "John"}]' + _csv = '1,2,3\n4,5,6\n7,8,9\n' + _bunk = '¡¡¡¡¡¡---///\n\n\n¡¡£™∞¢£§∞§¶•¶ª∞¶•ªº••ª–º§•†•§º¶•†¥ª–º•§ƒø¥¨©πƒø†ˆ¥ç©¨√øˆ¥≈†ƒ¥ç©ø¨çˆ¥ƒçø¶' - self.assertEqual(tablib.detect(_yaml)[0], tablib.formats.yaml) - self.assertEqual(tablib.detect(_csv)[0], tablib.formats.csv) - self.assertEqual(tablib.detect(_json)[0], tablib.formats.json) - self.assertEqual(tablib.detect(_bunk)[0], None) + self.assertEqual(tablib.detect(_yaml)[0], tablib.formats.yaml) + self.assertEqual(tablib.detect(_csv)[0], tablib.formats.csv) + self.assertEqual(tablib.detect(_json)[0], tablib.formats.json) + self.assertEqual(tablib.detect(_bunk)[0], None) - def test_transpose(self): - """Transpose a dataset.""" + def test_transpose(self): + """Transpose a dataset.""" - transposed_founders = self.founders.transpose() - first_row = transposed_founders[0] - second_row = transposed_founders[1] + transposed_founders = self.founders.transpose() + first_row = transposed_founders[0] + second_row = transposed_founders[1] - self.assertEqual(transposed_founders.headers, - ["first_name","John", "George", "Thomas"]) - self.assertEqual(first_row, - ("last_name","Adams", "Washington", "Jefferson")) - self.assertEqual(second_row, - ("gpa",90, 67, 50)) + self.assertEqual(transposed_founders.headers, + ["first_name","John", "George", "Thomas"]) + self.assertEqual(first_row, + ("last_name","Adams", "Washington", "Jefferson")) + self.assertEqual(second_row, + ("gpa",90, 67, 50)) - def test_row_stacking(self): + def test_row_stacking(self): - """Row stacking.""" + """Row stacking.""" - to_join = tablib.Dataset(headers=self.founders.headers) + to_join = tablib.Dataset(headers=self.founders.headers) - for row in self.founders: - to_join.append(row=row) + for row in self.founders: + to_join.append(row=row) - row_stacked = self.founders.stack_rows(to_join) + row_stacked = self.founders.stack_rows(to_join) - for column in row_stacked.headers: + for column in row_stacked.headers: - original_data = self.founders[column] - expected_data = original_data + original_data - self.assertEqual(row_stacked[column], expected_data) + original_data = self.founders[column] + expected_data = original_data + original_data + self.assertEqual(row_stacked[column], expected_data) - def test_column_stacking(self): + def test_column_stacking(self): - """Column stacking""" + """Column stacking""" - to_join = tablib.Dataset(headers=self.founders.headers) + to_join = tablib.Dataset(headers=self.founders.headers) - for row in self.founders: - to_join.append(row=row) + for row in self.founders: + to_join.append(row=row) - column_stacked = self.founders.stack_columns(to_join) + column_stacked = self.founders.stack_columns(to_join) - for index, row in enumerate(column_stacked): + for index, row in enumerate(column_stacked): - original_data = self.founders[index] - expected_data = original_data + original_data - self.assertEqual(row, expected_data) + original_data = self.founders[index] + expected_data = original_data + original_data + self.assertEqual(row, expected_data) - self.assertEqual(column_stacked[0], - ("John", "Adams", 90, "John", "Adams", 90)) + self.assertEqual(column_stacked[0], + ("John", "Adams", 90, "John", "Adams", 90)) - def test_sorting(self): + def test_sorting(self): - """Sort columns.""" + """Sort columns.""" - sorted_data = self.founders.sort(col="first_name") + sorted_data = self.founders.sort(col="first_name") - first_row = sorted_data[0] - second_row = sorted_data[2] - third_row = sorted_data[1] - expected_first = self.founders[1] - expected_second = self.founders[2] - expected_third = self.founders[0] + first_row = sorted_data[0] + second_row = sorted_data[2] + third_row = sorted_data[1] + expected_first = self.founders[1] + expected_second = self.founders[2] + expected_third = self.founders[0] - self.assertEqual(first_row, expected_first) - self.assertEqual(second_row, expected_second) - self.assertEqual(third_row, expected_third) + self.assertEqual(first_row, expected_first) + self.assertEqual(second_row, expected_second) + self.assertEqual(third_row, expected_third) - def test_wipe(self): - """Purge a dataset.""" + def test_wipe(self): + """Purge a dataset.""" - new_row = (1, 2, 3) - data.append(new_row) + new_row = (1, 2, 3) + data.append(new_row) - # Verify width/data - self.assertTrue(data.width == len(new_row)) - self.assertTrue(data[0] == new_row) + # Verify width/data + self.assertTrue(data.width == len(new_row)) + self.assertTrue(data[0] == new_row) - data.wipe() - new_row = (1, 2, 3, 4) - data.append(new_row) - self.assertTrue(data.width == len(new_row)) - self.assertTrue(data[0] == new_row) + data.wipe() + new_row = (1, 2, 3, 4) + data.append(new_row) + self.assertTrue(data.width == len(new_row)) + self.assertTrue(data[0] == new_row) if __name__ == '__main__': - unittest.main() + unittest.main() |
