From 93c6c3958172875354a688d430e92f0d95428e6a Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Mon, 13 Sep 2010 20:23:31 -0500 Subject: [PATCH 01/13] Misc. pep8 cleanups including spaces after ',' and blank line organization --- test_tablib.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/test_tablib.py b/test_tablib.py index cea6d24..81673bd 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -5,6 +5,7 @@ import unittest import tablib + class TablibTestCase(unittest.TestCase): def setUp(self): pass @@ -16,25 +17,22 @@ class TablibTestCase(unittest.TestCase): data = tablib.Dataset() - new_row = (1,2,3) + new_row = (1, 2, 3) data.append(new_row) self.assertTrue(data.width == len(new_row)) - def test_empty_append_with_headers(self): data = tablib.Dataset() data.headers = ['first', 'second'] - new_row = (1,2,3,4) - - self.assertRaises(tablib.InvalidDimensions, data.append, new_row) - - # def test_adding_header with (self): - + new_row = (1, 2, 3, 4) + self.assertRaises(tablib.InvalidDimensions, data.append, new_row) + + # def test_adding_header with (self): if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() From 1482ca4a198579afaa3f2a191ad2f468b28d2b37 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Mon, 13 Sep 2010 20:32:36 -0500 Subject: [PATCH 02/13] Adding docstrings --- test_tablib.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/test_tablib.py b/test_tablib.py index 81673bd..13aa66b 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -1,20 +1,26 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +"""Tests for tablib""" + import unittest import tablib class TablibTestCase(unittest.TestCase): + """Tablib test cases""" + def setUp(self): + """setup""" pass def tearDown(self): + """teardown""" pass def test_empty_append(self): - + """Verify append() correctly adds tuple with no headers""" data = tablib.Dataset() new_row = (1, 2, 3) @@ -23,7 +29,9 @@ class TablibTestCase(unittest.TestCase): self.assertTrue(data.width == len(new_row)) def test_empty_append_with_headers(self): - + """Verify append() correctly detects mismatch of number of + headers and data + """ data = tablib.Dataset() data.headers = ['first', 'second'] From f01cf184d4d1a94ac16ac33e84bb6ea71d9ff485 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Mon, 13 Sep 2010 21:03:29 -0500 Subject: [PATCH 03/13] Added simple test for slicing by headers --- test_tablib.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test_tablib.py b/test_tablib.py index 13aa66b..f63ba9d 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -26,7 +26,9 @@ class TablibTestCase(unittest.TestCase): 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) def test_empty_append_with_headers(self): """Verify append() correctly detects mismatch of number of @@ -39,6 +41,23 @@ class TablibTestCase(unittest.TestCase): self.assertRaises(tablib.InvalidDimensions, data.append, new_row) + def test_header_slicing(self): + """Verify slicing by headers""" + + headers = ('first_name', 'last_name', 'gpa') + + data = [ + ('John', 'Adams', 90), + ('George', 'Washington', 67) + ] + + data = tablib.Dataset(*data, headers=headers) + + # Slice by headers + self.assertEqual(data['first_name'], ['John', 'George']) + self.assertEqual(data['last_name'], ['Adams', 'Washington']) + self.assertEqual(data['gpa'], [90, 67]) + # def test_adding_header with (self): From 8673710ddb6dbd13d61cd6015352910a5df105aa Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Mon, 13 Sep 2010 21:08:31 -0500 Subject: [PATCH 04/13] Refactored creation of data set into setUp - Broke out tuples for more robust comparisions --- test_tablib.py | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/test_tablib.py b/test_tablib.py index f63ba9d..8dcbb94 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -12,8 +12,14 @@ class TablibTestCase(unittest.TestCase): """Tablib test cases""" def setUp(self): - """setup""" - pass + """Create simple data set with headers""" + headers = ('first_name', 'last_name', 'gpa') + self.john = ('John', 'Adams', 90) + self.george = ('George', 'Washington', 67) + + self.founders = tablib.Dataset(headers=headers) + self.founders.append(self.john) + self.founders.append(self.george) def tearDown(self): """teardown""" @@ -44,19 +50,10 @@ class TablibTestCase(unittest.TestCase): def test_header_slicing(self): """Verify slicing by headers""" - headers = ('first_name', 'last_name', 'gpa') - - data = [ - ('John', 'Adams', 90), - ('George', 'Washington', 67) - ] - - data = tablib.Dataset(*data, headers=headers) - # Slice by headers - self.assertEqual(data['first_name'], ['John', 'George']) - self.assertEqual(data['last_name'], ['Adams', 'Washington']) - self.assertEqual(data['gpa'], [90, 67]) + self.assertEqual(self.founders['first_name'], [self.john[0], self.george[0]]) + self.assertEqual(self.founders['last_name'], [self.john[1], self.george[1]]) + self.assertEqual(self.founders['gpa'], [self.john[2], self.george[2]]) # def test_adding_header with (self): From 5468dd7e679cd33ec6223ef451197d341ff2f32d Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Mon, 13 Sep 2010 21:23:20 -0500 Subject: [PATCH 05/13] Added test for slicing data elements --- test_tablib.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/test_tablib.py b/test_tablib.py index 8dcbb94..670a41b 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -50,11 +50,25 @@ class TablibTestCase(unittest.TestCase): def test_header_slicing(self): """Verify slicing by headers""" - # Slice by headers self.assertEqual(self.founders['first_name'], [self.john[0], self.george[0]]) self.assertEqual(self.founders['last_name'], [self.john[1], self.george[1]]) self.assertEqual(self.founders['gpa'], [self.john[2], self.george[2]]) + 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[2:], []) + self.assertEqual(self.founders[-1], self.george) + + # Slice multiple rows + self.assertEqual(self.founders[:], [self.john, self.george]) + self.assertEqual(self.founders[0:2], [self.john, self.george]) + self.assertEqual(self.founders[2:], []) + # def test_adding_header with (self): From 4755020dd7f6e9e7451c3c6518de0db0ba3fc620 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Mon, 13 Sep 2010 21:26:15 -0500 Subject: [PATCH 06/13] Added extra row to base data set - Testing with 3 rows is a bit more interesting --- test_tablib.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/test_tablib.py b/test_tablib.py index 670a41b..544ca12 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -16,10 +16,12 @@ class TablibTestCase(unittest.TestCase): 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=headers) self.founders.append(self.john) self.founders.append(self.george) + self.founders.append(self.tom) def tearDown(self): """teardown""" @@ -50,9 +52,12 @@ class TablibTestCase(unittest.TestCase): def test_header_slicing(self): """Verify slicing by headers""" - self.assertEqual(self.founders['first_name'], [self.john[0], self.george[0]]) - self.assertEqual(self.founders['last_name'], [self.john[1], self.george[1]]) - self.assertEqual(self.founders['gpa'], [self.john[2], self.george[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""" @@ -61,13 +66,13 @@ class TablibTestCase(unittest.TestCase): 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[2:], []) - self.assertEqual(self.founders[-1], 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.assertEqual(self.founders[:], [self.john, self.george, self.tom]) self.assertEqual(self.founders[0:2], [self.john, self.george]) - self.assertEqual(self.founders[2:], []) + self.assertEqual(self.founders[2:], [self.tom]) # def test_adding_header with (self): From 52db1ddc3eca6f4a0b3bb7ff2f71501d6b15d571 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Mon, 13 Sep 2010 21:27:35 -0500 Subject: [PATCH 07/13] Fixed typo in test from previous commit --- test_tablib.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test_tablib.py b/test_tablib.py index 544ca12..3111206 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -72,6 +72,7 @@ class TablibTestCase(unittest.TestCase): # 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_adding_header with (self): From bd470684a4d0cdf5f7e5ea127d28a89a92ef33b6 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Sun, 19 Sep 2010 16:06:47 -0500 Subject: [PATCH 08/13] Ignore file update - Update ignoring of python leftovers - Added vi noise --- .gitignore | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 91c9479..7b0b8c5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,8 +4,8 @@ dist/* MANIFEST # python skin -.pyc -.pyo +*.pyc +*.pyo # osx noise .DS_Store @@ -15,3 +15,5 @@ profile .idea .idea/* +# vi noise +*.swp From 7ba2849829f2265973f434ab318b4af1a0e2ad4b Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Sun, 19 Sep 2010 16:16:31 -0500 Subject: [PATCH 09/13] Misc. PEP8 whitespace celeanup --- test_tablib.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/test_tablib.py b/test_tablib.py index ad7bcd9..ac51ed8 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -32,7 +32,7 @@ class TablibTestCase(unittest.TestCase): def test_empty_append(self): """Verify append() correctly adds tuple with no headers""" - new_row = (1,2,3) + new_row = (1, 2, 3) data.append(new_row) # Verify width/data @@ -48,7 +48,6 @@ class TablibTestCase(unittest.TestCase): self.assertRaises(tablib.InvalidDimensions, data.append, new_row) - def test_add_column(self): # No Headers @@ -68,7 +67,7 @@ class TablibTestCase(unittest.TestCase): data.append(col=new_col) self.assertEquals(data[new_col[0]], new_col[1:]) - + def test_add_column_no_data_no_headers(self): # no headers @@ -94,11 +93,11 @@ class TablibTestCase(unittest.TestCase): self.assertEquals(data.width, 3) new_col = ('foo', 'bar') - + self.assertRaises(tablib.InvalidDimensions, data.append, col=new_col) def tuple_check(self): - data.append(col=(1,2,3)) + data.append(col=(1, 2, 3)) def test_header_slicing(self): """Verify slicing by headers""" @@ -126,6 +125,6 @@ class TablibTestCase(unittest.TestCase): self.assertEqual(self.founders[1:3], [self.george, self.tom]) self.assertEqual(self.founders[2:], [self.tom]) - + if __name__ == '__main__': unittest.main() From fad3546614ceadf6c6be8fdcbd2ce6fc0237c211 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Sun, 19 Sep 2010 16:25:18 -0500 Subject: [PATCH 10/13] Added docstrings --- test_tablib.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/test_tablib.py b/test_tablib.py index ac51ed8..9002ee8 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -49,7 +49,7 @@ class TablibTestCase(unittest.TestCase): self.assertRaises(tablib.InvalidDimensions, data.append, new_row) def test_add_column(self): - # No Headers + """Verify adding column works with/without headers""" data.append(['kenneth']) data.append(['bessie']) @@ -69,8 +69,7 @@ class TablibTestCase(unittest.TestCase): self.assertEquals(data[new_col[0]], new_col[1:]) def test_add_column_no_data_no_headers(self): - - # no headers + """Verify adding new column with no headers""" new_col = ('reitz', 'monke') @@ -81,8 +80,7 @@ class TablibTestCase(unittest.TestCase): self.assertEquals(data.height, len(new_col)) def test_add_column_no_data_with_headers(self): - - # no headers + """Verify adding new column with headers""" data.headers = ('first', 'last') From 99a45814d1205ba9a3f5c7045ccf232afc0ba310 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Sun, 19 Sep 2010 16:36:17 -0500 Subject: [PATCH 11/13] Added tests del functionality --- test_tablib.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test_tablib.py b/test_tablib.py index 9002ee8..0fffdc9 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -123,6 +123,20 @@ class TablibTestCase(unittest.TestCase): 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""" + + # Delete from front of object + del self.founders[0] + self.assertEqual(self.founders[:], [self.george, self.tom]) + + # Delete from back of object + del self.founders[1] + self.assertEqual(self.founders[:], [self.george]) + + # Delete from invalid index + self.assertRaises(IndexError, self.founders.__delitem__, 3) + if __name__ == '__main__': unittest.main() From 391ad61bef1d37fcb3b5aa2650a355588082f8c1 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Sun, 19 Sep 2010 16:41:23 -0500 Subject: [PATCH 12/13] Improved del test - Added testing for data set width/height --- test_tablib.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test_tablib.py b/test_tablib.py index 0fffdc9..b4b4fbc 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -130,10 +130,18 @@ class TablibTestCase(unittest.TestCase): 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) + # 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) + # Delete from invalid index self.assertRaises(IndexError, self.founders.__delitem__, 3) From d54d70bc223ab4f5d85e61e9b9d4c6376739012f Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Sun, 19 Sep 2010 17:04:14 -0500 Subject: [PATCH 13/13] Added test for csv export --- test_tablib.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/test_tablib.py b/test_tablib.py index b4b4fbc..09d05f6 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -16,12 +16,12 @@ class TablibTestCase(unittest.TestCase): global data data = tablib.Dataset() - headers = ('first_name', 'last_name', 'gpa') + 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=headers) + self.founders = tablib.Dataset(headers=self.headers) self.founders.append(self.john) self.founders.append(self.george) self.founders.append(self.tom) @@ -145,6 +145,23 @@ class TablibTestCase(unittest.TestCase): # Delete from invalid index self.assertRaises(IndexError, self.founders.__delitem__, 3) + 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 + "," + + 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) + if __name__ == '__main__': unittest.main()