コード例 #1
0
ファイル: test.py プロジェクト: Skuzz/Singly-Linkedlist
 def setUp(self):
     self.ll = Linkedlist()
コード例 #2
0
ファイル: test.py プロジェクト: Skuzz/Singly-Linkedlist
class TestLinkedlist(unittest.TestCase):
    # setUp()
    def setUp(self):
        self.ll = Linkedlist()

    # tearDown()
    def tearDown(self):
        self.ll.clear()

    # Test add()
    def test_add_one_node(self):
        self.ll.add('car')
        self.assertEqual(self.ll.size, 1)
        self.assertEqual(self.ll.head.data, 'car')
        self.assertEqual(self.ll.head.next, None)
        self.assertEqual(self.ll.tail.data, 'car')
        self.assertEqual(self.ll.tail.next, None)

    def test_add_two_node(self):
        self.ll.add('car')
        self.assertEqual(self.ll.size, 1)
        self.assertEqual(self.ll.head.data, 'car')
        self.assertEqual(self.ll.head.next, None)
        self.assertEqual(self.ll.tail.data, 'car')
        self.assertEqual(self.ll.tail.next, None)

        self.ll.add('bus')
        self.assertEqual(self.ll.size, 2)
        self.assertEqual(self.ll.head.data, 'car')
        self.assertEqual(self.ll.head.next.data, 'bus')
        self.assertEqual(self.ll.tail.data, 'bus')
        self.assertEqual(self.ll.tail.next, None)

    def test_add_three_node(self):
        self.ll.add('car')
        self.assertEqual(self.ll.size, 1)
        self.assertEqual(self.ll.head.data, 'car')
        self.assertEqual(self.ll.head.next, None)
        self.assertEqual(self.ll.tail.data, 'car')
        self.assertEqual(self.ll.tail.next, None)

        self.ll.add('bus')
        self.assertEqual(self.ll.size, 2)
        self.assertEqual(self.ll.head.data, 'car')
        self.assertEqual(self.ll.head.next.data, 'bus')
        self.assertEqual(self.ll.tail.data, 'bus')
        self.assertEqual(self.ll.tail.next, None)

        self.ll.add('truck')
        self.assertEqual(self.ll.size, 3)
        self.assertEqual(self.ll.head.data, 'car')
        self.assertEqual(self.ll.head.next.data, 'bus')
        self.assertEqual(self.ll.tail.data, 'truck')
        self.assertEqual(self.ll.tail.next, None)

    # Test isEqual()
    def test_isEqual(self):
        x_list = ['car', 'bus', 'truck']
        self.ll.add('car')
        self.ll.add('bus')
        self.ll.add('truck')
        self.assertEqual(self.ll.isEqual(x_list), True)


    # Test getSize()
    def test_getSize(self):
        self.assertEqual(self.ll.getSize(), 0)
        self.ll.add('car')
        self.assertEqual(self.ll.getSize(), 1)
        self.ll.add('bus')
        self.assertEqual(self.ll.getSize(), 2)
        self.ll.add('truck')
        self.assertEqual(self.ll.getSize(), 3)

    # Test peek()
    def test_peek(self):
        self.assertEqual(self.ll.peek(), None)
        self.ll.add('car')
        self.assertEqual(self.ll.peek(), 'car')
        self.ll.add('bus')
        self.assertEqual(self.ll.peek(), 'car')
        self.ll.add('truck')
        self.assertEqual(self.ll.peek(), 'car')

    # Test peekLast()
    def test_peekLast(self):
        self.assertEqual(self.ll.peekLast(), None)
        self.ll.add('car')
        self.assertEqual(self.ll.peekLast(), 'car')
        self.ll.add('bus')
        self.assertEqual(self.ll.peekLast(), 'bus')
        self.ll.add('truck')
        self.assertEqual(self.ll.peekLast(), 'truck')

    # Test clear()
    def test_clear(self):
        self.ll.clear()
        self.assertEqual(self.ll.head, None)
        self.assertEqual(self.ll.tail, None)
        self.assertEqual(self.ll.size, 0)

        self.ll.add('car')
        self.ll.clear()
        self.assertEqual(self.ll.head, None)
        self.assertEqual(self.ll.tail, None)
        self.assertEqual(self.ll.size, 0)

        self.ll.add('car')
        self.ll.add('bus')
        self.ll.clear()
        self.assertEqual(self.ll.head, None)
        self.assertEqual(self.ll.tail, None)
        self.assertEqual(self.ll.size, 0)

        self.ll.add('car')
        self.ll.add('bus')
        self.ll.add('truck')
        self.ll.clear()
        self.assertEqual(self.ll.head, None)
        self.assertEqual(self.ll.tail, None)
        self.assertEqual(self.ll.size, 0)

    # Test isEmpty()
    def test_isEmpty(self):
        self.assertEqual(self.ll.isEmpty(), True)
        self.ll.add('car')
        self.assertEqual(self.ll.isEmpty(), False)
        self.ll.add('bus')
        self.assertEqual(self.ll.isEmpty(), False)
        self.ll.add('truck')
        self.assertEqual(self.ll.isEmpty(), False)
        self.ll.clear()
        self.assertEqual(self.ll.isEmpty(), True)

    # Test remove()
    def test_remove_node_empty_list(self):
        self.assertEqual(self.ll.getSize(), 0)
        self.assertEqual(self.ll.isEmpty(), True)
        self.assertEqual(self.ll.remove('x'), False)
    
    # Test remove()
    def test_remove_head_node_list_size_one(self):
        # list size == 1
        self.ll.add('car')
        self.assertEqual(self.ll.remove('car'), True)
        self.assertEqual(self.ll.peek(), None)
        self.assertEqual(self.ll.peekLast(), None)
        self.assertEqual(self.ll.getSize(), 0)
        self.assertEqual(self.ll.isEmpty(), True)

    def test_remove_head_node_list_size_two(self):
        # list size == 2
        self.ll.add('car')
        self.ll.add('bus')
        self.assertEqual(self.ll.remove('car'), True)
        self.assertEqual(self.ll.peek(), 'bus')
        self.assertEqual(self.ll.peekLast(), 'bus')
        self.assertEqual(self.ll.getSize(), 1)
        self.assertEqual(self.ll.isEmpty(), False)

    def test_remove_head_node_list_size_greater_than_two(self):
        # list size > 2
        self.ll.add('car')
        self.ll.add('bus')
        self.ll.add('truck')
        self.assertEqual(self.ll.remove('car'), True)
        self.assertEqual(self.ll.peek(), 'bus')
        self.assertEqual(self.ll.peekLast(), 'truck')
        self.assertEqual(self.ll.getSize(), 2)
        self.assertEqual(self.ll.isEmpty(), False)

    # Test remove()
    def test_remove_tail_node_list_size_one(self):
        self.ll.add('car')
        self.assertEqual(self.ll.remove('car'), True)
        self.assertEqual(self.ll.peek(), None)
        self.assertEqual(self.ll.peekLast(), None)
        self.assertEqual(self.ll.getSize(), 0)
        self.assertEqual(self.ll.isEmpty(), True)

    # Test remove()
    def test_remove_tail_node_list_size_two(self):
        self.ll.add('car')
        self.ll.add('bus')
        self.assertEqual(self.ll.remove('bus'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'car')
        self.assertEqual(self.ll.getSize(), 1)
        self.assertEqual(self.ll.isEmpty(), False)

    # Test remove()
    def test_remove_tail_node_list_size_greater_than_two(self):
        self.ll.add('car')
        self.ll.add('bus')
        self.ll.add('truck')
        self.assertEqual(self.ll.remove('truck'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'bus')
        self.assertEqual(self.ll.getSize(), 2)
        self.assertEqual(self.ll.isEmpty(), False)

    # Test remove()
    def test_remove_mid_node_list_size_three(self):
        self.ll.add('car')
        self.ll.add('bus')
        self.ll.add('truck')
        self.assertEqual(self.ll.remove('bus'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'truck')
        self.assertEqual(self.ll.getSize(), 2)
        self.assertEqual(self.ll.isEmpty(), False)

    # Test remove()
    def test_remove_mid_node_list_size_three(self):
        self.ll.add('car')
        self.ll.add('bus')
        self.ll.add('truck')
        self.assertEqual(self.ll.remove('bus'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'truck')
        self.assertEqual(self.ll.getSize(), 2)
        self.assertEqual(self.ll.isEmpty(), False)

    # Test remove()
    def test_remove_mid_node_list_size_four(self):
        self.ll.add('car')
        self.ll.add('bus')
        self.ll.add('truck')
        self.ll.add('train')
        self.assertEqual(self.ll.remove('bus'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'train')
        self.assertEqual(self.ll.getSize(), 3)
        self.assertEqual(self.ll.isEmpty(), False)
        self.assertEqual(self.ll.remove('truck'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'train')
        self.assertEqual(self.ll.getSize(), 2)
        self.assertEqual(self.ll.isEmpty(), False)

    # Test remove()
    def test_remove_mid_node_list_size_five(self):
        self.ll.add('car')
        self.ll.add('bus')
        self.ll.add('truck')
        self.ll.add('train')
        self.ll.add('plane')
        self.assertEqual(self.ll.remove('bus'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'plane')
        self.assertEqual(self.ll.getSize(), 4)
        self.assertEqual(self.ll.isEmpty(), False)
        self.assertEqual(self.ll.remove('truck'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'plane')
        self.assertEqual(self.ll.getSize(), 3)
        self.assertEqual(self.ll.isEmpty(), False)
        self.assertEqual(self.ll.remove('train'), True)
        self.assertEqual(self.ll.peek(), 'car')
        self.assertEqual(self.ll.peekLast(), 'plane')
        self.assertEqual(self.ll.getSize(), 2)
        self.assertEqual(self.ll.isEmpty(), False)