summaryrefslogtreecommitdiff
path: root/test_tablib.py
blob: 3111206c279f8ee7a78df947dea012b199dfef22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Tests for tablib"""

import unittest

import tablib


class TablibTestCase(unittest.TestCase):
	"""Tablib test cases"""

	def setUp(self):
		"""Create simple data set with headers"""
		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"""
		pass

	def test_empty_append(self):
		"""Verify append() correctly adds tuple with no headers"""
		data = tablib.Dataset()

		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
		headers and data
		"""
		data = tablib.Dataset()

		data.headers = ['first', 'second']
		new_row = (1, 2, 3, 4)

		self.assertRaises(tablib.InvalidDimensions, data.append, new_row)

	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]])

	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 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):


if __name__ == '__main__':
	unittest.main()