git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import unittest
 | |
| 
 | |
| 
 | |
| def delete_node(node):
 | |
|     if node.next:
 | |
|         node.value = node.next.value
 | |
|         node.next = node.next.next
 | |
|     else:
 | |
|         raise Exception(
 | |
|             "We cannot delete the last node in a linked list using this function"
 | |
|         )
 | |
| 
 | |
| 
 | |
| # Tests
 | |
| class Test(unittest.TestCase):
 | |
|     class LinkedListNode(object):
 | |
|         def __init__(self, value, next=None):
 | |
|             self.value = value
 | |
|             self.next = next
 | |
| 
 | |
|         def get_values(self):
 | |
|             node = self
 | |
|             values = []
 | |
|             while node is not None:
 | |
|                 values.append(node.value)
 | |
|                 node = node.next
 | |
|             return values
 | |
| 
 | |
|     def setUp(self):
 | |
|         self.fourth = Test.LinkedListNode(4)
 | |
|         self.third = Test.LinkedListNode(3, self.fourth)
 | |
|         self.second = Test.LinkedListNode(2, self.third)
 | |
|         self.first = Test.LinkedListNode(1, self.second)
 | |
| 
 | |
|     def test_node_at_beginning(self):
 | |
|         delete_node(self.first)
 | |
|         actual = self.first.get_values()
 | |
|         expected = [2, 3, 4]
 | |
|         self.assertEqual(actual, expected)
 | |
| 
 | |
|     def test_node_in_middle(self):
 | |
|         delete_node(self.second)
 | |
|         actual = self.first.get_values()
 | |
|         expected = [1, 3, 4]
 | |
|         self.assertEqual(actual, expected)
 | |
| 
 | |
|     def test_node_at_end(self):
 | |
|         with self.assertRaises(Exception):
 | |
|             delete_node(self.fourth)
 | |
| 
 | |
|     def test_one_node_in_list(self):
 | |
|         unique = Test.LinkedListNode(1)
 | |
|         with self.assertRaises(Exception):
 | |
|             delete_node(unique)
 | |
| 
 | |
| 
 | |
| unittest.main(verbosity=2)
 |