def test_is_empty(self): l = OrderedList() self.assertTrue(l.is_empty()) l.add('apple') self.assertFalse(l.is_empty()) l.remove('apple') self.assertTrue(l.is_empty())
def test_remove(self): # Build a list, check that it is as expected l = OrderedList() l.add('apple') l.add('banana') l.add('coconut') self.assertEqual(l.size, 3) self.assertEqual(l.first.item, 'apple') self.assertEqual(l.last.item, 'coconut') # Case: remove from front of list self.assertEqual(l.first.item, 'apple') l.remove('apple') self.assertEqual(l.first.item, 'banana') self.assertEqual(l.size, 2) # Case: remove from end of list l.add('durian') self.assertEqual(l.size, 3) self.assertEqual(l.last.item, 'durian') l.remove('durian') self.assertEqual(l.size, 2) self.assertEqual(l.last.item, 'coconut') self.assertEqual(l.first.item, 'banana') # Case: remove from middle of list l.add('elderberry') self.assertEqual(l.size, 3) self.assertEqual(l.last.item, 'elderberry') l.remove('coconut') self.assertEqual(l.size, 2) self.assertEqual(l.first.item, 'banana') self.assertEqual(l.last.item, 'elderberry') l.remove('banana') self.assertEqual(l.size, 1) self.assertEqual(l.first.item, 'elderberry') self.assertEqual(l.last.item, 'elderberry') l.remove('elderberry') self.assertEqual(l.size, 0) self.assertEqual(l.first, None) self.assertEqual(l.last, None) l.remove('pear') self.assertEqual(l.size, 0) self.assertEqual(l.first, None) self.assertEqual(l.last, None)
def test_add(self): l = OrderedList() l.add(7) # add to an empty list self.assertEqual(l.size, 1) self.assertEqual(l.first.item, 7) self.assertEqual(l.last.item, 7) l.add(4) # add to front of list self.assertEqual(l.size, 2) self.assertEqual(l.first.item, 4) self.assertEqual(l.last.item, 7) l.add(3) # add to front of list self.assertEqual(l.size, 3) self.assertEqual(l.first.item, 3) l.add(8) # add to end of list self.assertEqual(l.size, 4) self.assertEqual(l.last.item, 8) l.add(9) # add to end of list self.assertEqual(l.size, 5) self.assertEqual(l.last.item, 9) l.add(5) # add to middle of list self.assertEqual(l.size, 6) a = l.first for i in range(2): # walk through the list until the num we added a = a.behind self.assertEqual(a.item, 5) # confirm that it is what was added l.add(6) # add to middle of list self.assertEqual(l.size, 7) b = l.first for i in range(3): # walk through the list until the num we added b = b.behind self.assertEqual(b.item, 6) o = OrderedList() o.add('banana') self.assertEqual(o.size, 1) self.assertEqual(o.first.item, 'banana') self.assertEqual(o.last.item, 'banana') o.add('apple') self.assertEqual(o.size, 2) self.assertEqual(o.first.item, 'apple') self.assertEqual(o.last.item, 'banana') o.add('coconut') self.assertEqual(o.size, 3) self.assertEqual(o.first.item, 'apple') self.assertEqual(o.last.item, 'coconut')
def test_list_contents(self): # Create a Python list, populate it, create my own list with the same # loop to make sure the content is identical pylistup = [] mylist = OrderedList() for i in range(10): pylistup.append(i * 3) mylist.add(i * 3) self.assertEqual(len(pylistup), mylist.size) for i in range(mylist.size): self.assertEqual(mylist.grab(0), pylistup[i]) # Add declining numbers to end of list to ensure that the OrderedList is sorting # grab from the front each time pylistdown = [] twolist = OrderedList() for i in range(10,0,-1): pylistdown.insert(0, i * 3) twolist.add(i * 3) self.assertEqual(len(pylistdown), twolist.size) for i in range(mylist.size, -1): self.assertEqual(mylist.grab(0), pylistdown[i]) # Add in declining order, grab from end pylistback = [] threelist = OrderedList() for i in range(10,0,-1): pylistback.insert(0, i * 3) mylist.add(i * 3) self.assertEqual(len(pylistback), mylist.size) for i in range(len(pylistback), -1): self.assertEqual(mylist.grab(mylist.size -1), pylistback[i])
def test_grab(self): # Build a list, check that it is as expected l = OrderedList() l.add('apple') l.add('banana') l.add('coconut') self.assertEqual(l.size, 3) # Case: grab from front of list self.assertEqual(l.grab(0), 'apple') self.assertEqual(l.size, 2) self.assertEqual(l.first.item, 'banana') self.assertEqual(l.last.item, 'coconut') # Case: grab from end of list l.add('durian') self.assertEqual(l.size, 3) self.assertEqual(l.grab(2), 'durian') self.assertEqual(l.first.item, 'banana') self.assertEqual(l.last.item, 'coconut') # Case: grab from middle of list l.add('elderberry') self.assertEqual(l.size, 3) self.assertEqual(l.grab(1), 'coconut') self.assertEqual(l.first.item, 'banana') self.assertEqual(l.last.item, 'elderberry') # Case: grab from outside the list self.assertEqual(l.grab(6), None) self.assertEqual(l.grab(-14), None) self.assertEqual(l.grab(-1), 'elderberry')
def test_pop(self): l = OrderedList() l.add('apple') l.add('banana') l.add('coconut') self.assertEqual(l.size, 3) self.assertEqual(l.pop(), 'coconut') self.assertEqual(l.size, 2) self.assertEqual(l.pop(), 'banana') self.assertEqual(l.size, 1) self.assertEqual(l.pop(), 'apple') self.assertEqual(l.size, 0) self.assertEqual(l.pop(), None)
def test_index(self): l = OrderedList() self.assertEqual(l.index('peach'), None) l.add('apple') l.add('banana') l.add('coconut') l.add('durian') l.add('elderberry') self.assertEqual(l.index('apple'), 0) self.assertEqual(l.index('banana'), 1) self.assertEqual(l.index('coconut'), 2) self.assertEqual(l.index('durian'), 3) self.assertEqual(l.index('elderberry'), 4) self.assertEqual(l.index('peach'), None)
def test_search(self): l = OrderedList() l.add('apple') l.add('banana') l.add('coconut') l.add('durian') l.add('elderberry') self.assertEqual(l.size, 5) self.assertTrue(l.search('apple')) self.assertTrue(l.search('banana')) self.assertTrue(l.search('coconut')) self.assertTrue(l.search('durian')) self.assertTrue(l.search('elderberry')) self.assertFalse(l.search(None)) self.assertFalse(l.search('peach'))