def test_set_previous(self): node = Node("Hola") node2 = Node("Mundo") node.set_previous(node2) self.assertEqual(node.get_value(), "Hola") self.assertIsNone(node.get_key()) self.assertIsNone(node.get_next()) self.assertEqual(node.get_previous(), node2)
def test_string(self): node = Node("Hola") self.assertEqual(node.get_value(), "Hola") self.assertEqual(node.__repr__(), "Hola") self.assertIsNone(node.get_key()) self.assertIsNone(node.get_next()) self.assertIsNone(node.get_previous())
def test_insert_node_at_front(self): for item in self.__items: node = Node(item) self.__dll.insert_node_at_front(node) elements = list() for item in self.__dll: elements.append(item) self.assertEqual(self.__dll.size(), 4) self.assertEqual(elements, [4,3,2,1])
def set(self, key, value): if key is not None and self.__verify_capacity(): # if the problem_1 is at capacity remove the oldest item if self.size() == self.capacity(): node = self.__dll.remove_last_element() self.__hm.remove(node.get_key()) node = self.__hm.get(key) # Node is on the map if node is not None: node.set_value(value) self.__dll.remove_node(node) # Node is not on the map else: node = Node(value) node.set_key(key) self.__hm.put(key, node) self.__dll.insert_node_at_front(node) return True return False
def test_remove_multiple_values(self): for item in self.__items: self.__dll.insert(item) self.__dll.remove(4) self.__dll.remove(1) self.__dll.remove(2) self.__dll.remove(3) self.assertEqual(self.__dll.size(), 0) self.__dll.insert_node(Node(9)) self.__dll.insert_node_at_front(Node(8)) self.__dll.insert_at_front(7) elements = list() for item in self.__dll: elements.append(item) self.assertEqual(self.__dll.size(), 3) self.assertEqual(elements, [7,8,9]) print(self.__dll)
def test_remove_tail_node(self): nodes = list() for item in self.__items: node = Node(item) self.__dll.insert_node(node) nodes.append(node) self.__dll.remove_node(nodes[3]) elements = list() for item in self.__dll: elements.append(item) self.assertEqual(self.__dll.size(), 3) self.assertEqual(elements, [1,2,3])
def test_remove_multiple_nodes(self): nodes = list() for item in self.__items: node = Node(item) self.__dll.insert_node(node) nodes.append(node) self.__dll.remove_node(nodes[1]) self.__dll.remove_node(nodes[0]) self.__dll.remove_node(nodes[3]) self.__dll.remove_node(nodes[2]) self.assertEqual(self.__dll.size(), 0) self.__dll.insert(5) self.__dll.insert_at_front(4) self.__dll.insert_at_front(3) elements = list() for item in self.__dll: elements.append(item) self.assertEqual(self.__dll.size(), 3) self.assertEqual(elements, [3,4,5])
def test_new_node(self): node = Node("Hola") self.assertEqual(node.get_value(), "Hola") self.assertIsNone(node.get_key()) self.assertIsNone(node.get_next()) self.assertIsNone(node.get_previous())
def test_not_equal(self): node = Node("Hola") node2 = Node("Hola1") self.assertEqual(node.get_value(), "Hola") self.assertEqual(node2.get_value(), "Hola1") self.assertNotEqual(node, node2) self.assertNotEqual(node.__hash__(), node2.__hash__()) self.assertIsNone(node.get_key()) self.assertIsNone(node.get_next()) self.assertIsNone(node.get_previous())
def insert(self, value): if value is None: return node = Node(value) return self.insert_node(node)
def insert_at_front(self, value): if value is None: return False node = Node(value) return self.insert_node_at_front(node)