def test_copy(self): """ Test if returns a copy of it's contents """ sl = SortedList() self.assertEqual(sl.copy(), []) sl.extend([10, 5, 20, 3]) self.assertEqual(sl.copy(), [3, 5, 10, 20])
def test_clear(self): """ Test if object clears it's contents """ sl = SortedList() sl.extend([0, 10, 20, -5, -200]) sl.clear() self.assertEqual(len(sl), 0) self.assertEqual(sl.sequence, [])
def test_count(self): """ Test if returns correct count of an item """ sl = SortedList() sl.extend([0, 4, 3, 4, 3, 4, 10, 4, 10, 3]) self.assertEqual(sl.count(4), 4) self.assertEqual(sl.count(3), 3) self.assertEqual(sl.count(0), 1) self.assertEqual(sl.count(2000), 0)
def test_index(self): """ Test if returns the index of an item """ sl = SortedList() self.assertRaises(ValueError, sl.index, 0) sl.extend([0, 1, 1, 10, 1, 15, 20]) self.assertEqual(sl.index(0), 0) self.assertEqual(sl.index(1), 1) self.assertEqual(sl.index(1, 3), 3) self.assertRaises(ValueError, sl.index, 10, 0, 3)
def test_remove(self): """ Test if object removes items """ sl = SortedList() sl.extend([0, 10, 20, -5, 10]) sl.remove(0) self.assertEqual(sl.sequence, [-5, 10, 10, 20]) sl.remove(10) self.assertEqual(sl.sequence, [-5, 10, 20]) sl.remove(10) self.assertEqual(sl.sequence, [-5, 20]) self.assertRaises(ValueError, sl.remove, 10)
def test_pop(self): """ Test if the object pops correctly """ sl = SortedList() with self.assertRaises(IndexError): sl.pop() sl.pop(0) sl.add(5) self.assertEqual(sl.pop(), 5) sl.extend([6, 90, 3, 4, 9]) self.assertEqual(sl.pop(), 90) self.assertEqual(sl.pop(0), 3) self.assertEqual(sl.sequence, [4, 6, 9])
def test_extend(self): """ Test if object accepts an iterable and puts all of it's items in correct order """ sl = SortedList() items = [3, 0, 1, 15] sl.extend(items) self.assertEqual(sorted(items), sl.sequence) more_items = [-5, 20, 3] sl.extend(more_items) self.assertEqual(sorted(items + more_items), sl.sequence) sl.extend([]) self.assertEqual(sorted(items + more_items), sl.sequence)