data structures: Lists: tests¶
Here is the code in tests/test_lists.py
import unittest
class TestLists(unittest.TestCase):
def test_making_a_list(self):
self.assertEqual(
list((0, 1, 2, 3)),
[0, 1, 2, 3]
)
def test_making_a_list_w_square_brackets(self):
self.assertEqual(
[0, 1, 2, 3],
list((0, 1, 2, 3))
)
def test_adding_an_item_to_a_list(self):
a_list = [0, 1, 2, 3]
self.assertEqual(a_list, [0, 1, 2, 3])
a_list.append(4)
self.assertEqual(a_list, [0, 1, 2, 3, 4])
def test_removing_an_item_from_a_list(self):
a_list = [0, 1, 2, 3]
self.assertEqual(a_list, [0, 1, 2, 3])
a_list.remove(2)
self.assertEqual(a_list, [0, 1, 3])
def test_removing_an_item_from_a_list_when_multiple_exist(self):
a_list = [0, 2, 1, 2, 3, 2]
self.assertEqual(a_list, [0, 2, 1, 2, 3, 2])
a_list.remove(2)
self.assertEqual(a_list, [0, 1, 2, 3, 2])
def test_removing_the_last_item_from_a_list(self):
a_list = [0, 1, 2, 3]
self.assertEqual(a_list, [0, 1, 2, 3])
last_item = a_list.pop()
self.assertEqual(last_item, 3)
self.assertEqual(a_list, [0, 1, 2])
def test_getting_items_from_a_list(self):
a_list = ['first', 'second', 'third', 'fourth']
self.assertEqual(
a_list,
['first', 'second', 'third', 'fourth']
)
self.assertEqual(a_list[0], 'first')
self.assertEqual(a_list[2], 'third')
self.assertEqual(a_list[1], 'second')
self.assertEqual(a_list[3], 'fourth')
self.assertEqual(a_list[-1], 'fourth')
self.assertEqual(a_list[-3], 'second')
self.assertEqual(a_list[-2], 'third')
self.assertEqual(a_list[-4], 'first')
def test_index_error(self):
a_list = ['first', 'second', 'third', 'fourth']
with self.assertRaises(IndexError):
a_list[5]
a_list[-5]
def test_list_attributes_and_methods(self):
self.maxDiff = None
self.assertEqual(
dir(list),
[
'__add__',
'__class__',
'__class_getitem__',
'__contains__',
'__delattr__',
'__delitem__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getstate__',
'__gt__',
'__hash__',
'__iadd__',
'__imul__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__reversed__',
'__rmul__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__',
'append',
'clear',
'copy',
'count',
'extend',
'index',
'insert',
'pop',
'remove',
'reverse',
'sort'
]
)
# Exceptions Encountered
# AssertionError
# TypeError
# IndexError