Exemple #1
0
	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)
Exemple #2
0
	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)		
Exemple #3
0
	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)	
Exemple #4
0
	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)		
Exemple #5
0
	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)
Exemple #6
0
	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
Exemple #8
0
	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)	
Exemple #9
0
	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)
Exemple #10
0
	def test_append(self):
	    list = LinkedList()	    
	    for i in range(0, 10):
	    	list.append(i)	    	
	    	self.assertEqual(list[i], i)
Exemple #11
0
	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)
Exemple #12
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)
Exemple #13
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])
Exemple #14
0
    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))