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