def test_count(self): list = LinkedList() self.assertEqual(list.count, 0) for i in range(0, 10): list.append(i) self.assertEqual(list.count, 10)
def test_get_node(self): list = LinkedList([1, 2, 3]) self.assertEqual(list.get_node(2).data, 3) self.assertEqual(list.get_node(1).data, 2) self.assertEqual(list.get_node(0).data, 1) list.append(10) self.assertEqual(list.get_node(3).data, 10) list.prepend(10) self.assertEqual(list.get_node(0).data, 10)
def test_front_back(self): list = LinkedList() for i in range(0, 10): list.append(i) self.assertEqual(list.front(), 0) self.assertEqual(list.back(), i) for i in range(0, 10): list.prepend(i) self.assertEqual(list.front(), i) self.assertEqual(list.back(), 9)
def test_iter_2(self): list = LinkedList() for i in range(0, 10): list.append(i) self.assertEqual(list.count, 10) i = 0 for v in list: self.assertEqual(v, i) i += 1 self.assertEqual(list.count, i)
def test_iter_is_not_mutable(self): list = LinkedList([1, 2, 3]) for v in list: v = 69 for i in range(len(list)): self.assertNotEqual(list[i], 69)
def test_iter(self): list = LinkedList() i = 0 for data in list: self.assertEqual(data, i) list = LinkedList() list.append(0) i = 0 for data in list: self.assertEqual(data, 0) list = LinkedList() for i in range(0, 1000): list.append(i) i = 0 for data in list: self.assertEqual(data, i) i += 1
def add(self, key, value): self.expand() index = self.hash(key) if self.list[index] is None: self.list[index] = LinkedList() self.list[index].append([key, value]) else: for kvp in self.list[index]: if kvp[0] == key: kvp[1] = value break else: self.list[index].append([key, value]) self.count += 1
def test_insert(self): list = LinkedList() with self.assertRaises(IndexError): list.insert(1, 0) list.insert(0, 0) self.assertEqual(list[0], 0) list.insert(0, 1) self.assertEqual(list[0], 1) list.insert(2, 2) self.assertEqual(list[0], 1) self.assertEqual(list[1], 0) self.assertEqual(list[2], 2) list.insert(2, 3) list.insert(2, 4) self.assertEqual(list[0], 1) self.assertEqual(list[1], 0) self.assertEqual(list[2], 4) self.assertEqual(list[3], 3) self.assertEqual(list[4], 2) with self.assertRaises(IndexError): list.insert(6, 3)
def test_remove(self): list = LinkedList() with self.assertRaises(IndexError): list.remove(0) list.append(0) self.assertEqual(list[0], 0) list.remove(0) with self.assertRaises(IndexError): list[0] list = LinkedList() for i in range(0, 10): list.append(i) self.assertEqual(list[5], 5) list.remove(5) for data in list: self.assertNotEqual(data, 5) with self.assertRaises(IndexError): list.remove(999)
def test_append(self): list = LinkedList() for i in range(0, 10): list.append(i) self.assertEqual(list[i], i)
def test_remove_front_back(self): list = LinkedList() for i in range(0, 10): list.append(i) self.assertEqual(list.count, 10) while len(list) > 0: self.assertEqual(list.back(), 9) list.remove_front() self.assertEqual(list.count, 0) for i in range(0, 10): list.append(i) self.assertEqual(list.count, 10) while len(list) > 0: self.assertEqual(list.front(), 0) list.remove_back() self.assertEqual(list.count, 0)
def test_prepend(self): list = LinkedList() for i in range(0, 10): list.prepend(i) self.assertEqual(list[0], i) self.assertEqual(list[9], 0)
def test_partition(self): l = LinkedList([]) partition(l, 2) self.assertEqual(l, []) l = LinkedList([2, 1]) partition(l, 2) self.assertEqual(l, [1, 2]) l = LinkedList([1, 2]) partition(l, 2) self.assertEqual(l, [1, 2]) l = LinkedList([2, 3, 1]) partition(l, 2) self.assertEqual(l, [1, 3, 2]) l = LinkedList([1, 2, 3]) partition(l, 2) self.assertEqual(l, [1, 2, 3]) l = LinkedList([1, 2, 3, 4]) partition(l, 2) self.assertEqual(l, [1, 2, 3, 4]) l = LinkedList([4, 3, 2, 1]) partition(l, 2) self.assertEqual(l, [1, 2, 3, 4]) l = LinkedList([3, 2, 1, 4]) partition(l, 2) self.assertEqual(l, [1, 2, 3, 4]) l = LinkedList([3, 2, 1, 4]) partition(l, 3) self.assertEqual(l, [1, 2, 3, 4]) l = LinkedList([5, 3, 2, 1, 4]) partition(l, 3) self.assertEqual(l, [1, 2, 3, 5, 4]) l = LinkedList([3, 5, 8, 5, 10, 2, 1]) partition(l, 5) self.assertEqual(l, [3, 1, 2, 5, 10, 8, 5])
def test_is_palindrome(self): l = LinkedList() l.append("l") self.assertTrue(is_palindrome(l)) l.append("o") self.assertFalse(is_palindrome(l)) l.append("l") self.assertTrue(is_palindrome(l)) l.clear() l.append("b") l.append("o") l.append("o") l.append("b") self.assertTrue(is_palindrome(l)) l.append("s") self.assertFalse(is_palindrome(l))