예제 #1
0
    def test_delete_list(self):
        '''
        case2:测试函数delete_list功能

        1、删除空链表,链表仍为空
        2、删除非空链表,链表为空
        '''
        temp_list = Llist()
        temp_list.delete_list()
        value = temp_list.is_empty_list()
        self.assertEqual(value, True, "value_info " + str(value))

        temp_list.append(1)
        temp_list.delete_list()
        value = temp_list.is_empty_list()
        self.assertEqual(value, True, "value_info " + str(value))
예제 #2
0
    def test_prepend(self):
        '''
        case3:测试prepend函数
        
        1、使用prepend添加1个元素'a',索引0为元素'a'
        2、使用prepend再添加1个元素'b',索引0为元素'b';索引1为元素'a'      
        '''
        temp_list = Llist()
        temp_list.prepend('a')
        value = temp_list.index(0)
        self.assertEqual(value, 'a', "value_info " + str(value))

        temp_list.prepend('b')
        value = temp_list.index(0)
        self.assertEqual(value, 'b', "value_info " + str(value))

        value = temp_list.index(1)
        self.assertEqual(value, 'a', "value_info " + str(value))
예제 #3
0
    def test_length(self):
        '''
        case12:测试length函数

        1、当链表为空时,调用length函数,返回链表长度为0        
        2、原链表存在4个元素[1,2,'a','b'],调用length函数,返回链表长度为4    
        '''
        '''step 1'''
        temp_list = Llist()
        value = temp_list.length()
        self.assertEqual(value, 0, "value_info " + str(value))
        '''step 2'''
        temp_list.append(1)
        temp_list.append(2)
        temp_list.append('a')
        temp_list.append('b')
        value = temp_list.length()
        self.assertEqual(value, 4, "value_info " + str(value))
예제 #4
0
    def test_prepop(self):
        '''
        case6:测试prepop函数
        
        1、链表存在2个元素[1,2],使用prepop函数,删除元素,被删除元素为1
        2、使用prepop函数,再次删除元素,被删除元素为2
        3、使用prepop函数,再次删除元素,抛出指定异常
        '''
        temp_list = Llist()
        temp_list.append(1)
        temp_list.append(2)
        value = temp_list.prepop()
        self.assertEqual(value, 1, "value_info " + str(value))

        value = temp_list.prepop()
        self.assertEqual(value, 2, "value_info " + str(value))

        with self.assertRaisesRegexp(LinkedListOperateError, 'list is empty'):
            temp_list.prepop()
예제 #5
0
    def test_is_empty_list(self):
        "case1:test is_empty_list function"
        '''
        1、当链表为空时返回True
        2、当链表不为空时返回False
        '''
        temp_list = Llist()
        value = temp_list.is_empty_list()
        self.assertEqual(value, True, "value_info " + str(value))

        temp_list.append(1)
        value = temp_list.is_empty_list()
        self.assertEqual(value, False, "value_info " + str(value))
예제 #6
0
    def test_middle_pend(self):
        '''
        case5:测试middle_pend函数
        
        1、当被插入元素链表length<2,抛出指定异常
        2、原链表存在2个元素[1,2],使用middle_pend在索引1添加元素'a',索引1为元素'a',索引0为元素1,索引2为元素2
        3、原链表存在3个元素[1,'a',2] , 使用middle_pend在索引2添加元素'b',索引1为元素'a',索引2为元素'b',索引3为元素2
        4、原链表存在4个元素[1,'a','b',2],指定插入index=0或4,抛出指定异常
        '''
        '''step 1'''
        temp_list = Llist()
        temp_list.append(1)
        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'the length of list is less than 2,can not execute middle_pend'
        ):
            temp_list.middle_pend(0, 'aaa')
        '''step 2'''
        temp_list.append(2)
        temp_list.middle_pend(1, 'a')
        value = temp_list.index(1)
        self.assertEqual(value, 'a', "value_info " + str(value))

        value = temp_list.index(0)
        self.assertEqual(value, 1, "value_info " + str(value))

        value = temp_list.index(2)
        self.assertEqual(value, 2, "value_info " + str(value))
        '''step 3'''
        temp_list.middle_pend(2, 'b')
        value = temp_list.index(1)
        self.assertEqual(value, 'a', "value_info " + str(value))

        value = temp_list.index(2)
        self.assertEqual(value, 'b', "value_info " + str(value))

        value = temp_list.index(3)
        self.assertEqual(value, 2, "value_info " + str(value))
        '''step 4'''
        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'the input index can not execute middle_pend'):
            temp_list.middle_pend(0, 'aaa')

        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'the input index can not execute middle_pend'):
            temp_list.middle_pend(4, 'aaa')
예제 #7
0
    def test_append(self):
        '''
        case4:测试append函数

        1、使用append添加1个元素'a',索引0为元素'a'
        2、使用append再添加1个元素'b',索引0为元素'a';索引1为元素'b'
        3、使用append再添加1个元素'c',索引2为元素'c'        
        '''
        temp_list = Llist()
        temp_list.append('a')
        value = temp_list.index(0)
        self.assertEqual(value, 'a', "value_info " + str(value))

        temp_list.append('b')
        value = temp_list.index(0)
        self.assertEqual(value, 'a', "value_info " + str(value))

        value = temp_list.index(1)
        self.assertEqual(value, 'b', "value_info " + str(value))

        temp_list.append('c')
        value = temp_list.index(2)
        self.assertEqual(value, 'c', "value_info " + str(value))
예제 #8
0
    def test_index_pop(self):
        '''
        case14:测试index_pop函数

        1、当链表为空时,删除空链表中元素,抛出指定异常   
        2、当链表为[0,1,2,3,4,5,6]时,删除index=-1或7的元素,抛出指定异常   
        3、当链表为[0,1,2,3,4,5,6]时,删除index=5和index=1的元素,元素删除正确,删除后链表长度为5
        4、当链表为[0,2,3,4,6]时,删除index=0,元素删除正确
        5、当链表为[2,3,4,6]时,删除index=3,元素删除正确,删除后链表长度为3
        '''
        '''step 1'''
        temp_list = Llist()
        with self.assertRaisesRegexp(LinkedListOperateError, 'list is empty'):
            temp_list.index_pop(0)
        '''step 2'''
        for i in xrange(7):
            temp_list.append(i)
        with self.assertRaisesRegexp(LinkedListOperateError,
                                     'index is out of range'):
            temp_list.index_pop(-1)
        with self.assertRaisesRegexp(LinkedListOperateError,
                                     'index is out of range'):
            temp_list.index_pop(7)
        '''step 3'''
        value = temp_list.index_pop(5)
        self.assertEqual(value, 5, "value_info " + str(value))

        value = temp_list.index_pop(1)
        self.assertEqual(value, 1, "value_info " + str(value))

        value = temp_list.length()
        self.assertEqual(value, 5, "value_info " + str(value))
        '''step 4'''
        value = temp_list.index_pop(0)
        self.assertEqual(value, 0, "value_info " + str(value))
        '''step 5'''
        value = temp_list.index_pop(3)
        self.assertEqual(value, 6, "value_info " + str(value))

        value = temp_list.length()
        self.assertEqual(value, 3, "value_info " + str(value))
예제 #9
0
    def test_index_insert(self):
        '''
        case13:测试index_insert函数

        1、当链表为空时,在索引0插入元素'a',索引index=0元素为'a'       
        2、当链表为['a']时,在索引1插入元素'b',索引index=1元素为'b'
        3、当链表为['a','b']时,在索引1插入元素'c',索引index=1元素为'c',索引index=2元素为'b'
        4、当链表为['a','c','b']时,传入索引>=4或<=-1或非数字,抛出指定异常
        '''
        '''step 1'''
        temp_list = Llist()
        temp_list.index_insert(0, 'a')
        value = temp_list.index(0)
        self.assertEqual(value, 'a', "value_info " + str(value))
        '''step 2'''
        temp_list.index_insert(1, 'b')
        value = temp_list.index(1)
        self.assertEqual(value, 'b', "value_info " + str(value))
        '''step 3'''
        temp_list.index_insert(1, 'c')
        value = temp_list.index(1)
        self.assertEqual(value, 'c', "value_info " + str(value))

        value = temp_list.index(2)
        self.assertEqual(value, 'b', "value_info " + str(value))
        '''step 4'''
        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'index is out of range or index not a integer'):
            temp_list.index_insert(4, 'ccc')
        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'index is out of range or index not a integer'):
            temp_list.index_insert(-1, 'ccc')
        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'index is out of range or index not a integer'):
            temp_list.index_insert('aaa', 'ccc')
예제 #10
0
    def test_modify_element(self):
        '''
        case11:测试modify_element函数

        1、当链表为空时,调用modify_element函数,抛出指定异常        
        2、原链表存在4个元素[1,2,'a','b'],指定索引index=-1或4元素,抛出指定异常
                        
        3、原链表存在4个元素[1,2,'a','b'],修改索引index=0元素为'aa'
        4、原链表存在4个元素[1,2,'a','b'],修改索引index=3元素为'cc'     
        '''
        '''step 1'''
        temp_list = Llist()
        with self.assertRaisesRegexp(LinkedListOperateError, 'list is empty'):
            temp_list.modify_element(1, 'aa')
        '''step 2'''
        temp_list.append(1)
        temp_list.append(2)
        temp_list.append('a')
        temp_list.append('b')
        with self.assertRaisesRegexp(LinkedListOperateError,
                                     'list index out of range'):
            temp_list.modify_element(-1, 'aa')

        with self.assertRaisesRegexp(LinkedListOperateError,
                                     'list index out of range'):
            temp_list.modify_element(4, 'aa')
        '''step 3'''
        temp_list.modify_element(0, 'aa')
        value = temp_list.index(0)
        self.assertEqual(value, 'aa', "value_info " + str(value))
        '''step 4'''
        temp_list.modify_element(3, 'cc')
        value = temp_list.index(3)
        self.assertEqual(value, 'cc', "value_info " + str(value))
예제 #11
0
    def test_index(self):
        '''
        case10:测试index函数

        1、当链表为空时,调用index函数,抛出指定异常        
        2、原链表存在4个元素[1,2,'a','b'],指定索引index=-1或4元素,抛出指定异常                
        3、原链表存在4个元素[1,2,'a','b'],指定索引index=0,找到节点0
        4、原链表存在4个元素[1,2,'a','b'],指定索引index=3,找到节点3        
        '''
        '''step 1'''
        temp_list = Llist()
        with self.assertRaisesRegexp(LinkedListOperateError, 'list is empty'):
            temp_list.index(1)
        '''step 2'''
        temp_list.append(1)
        temp_list.append(2)
        temp_list.append('a')
        temp_list.append('b')
        with self.assertRaisesRegexp(LinkedListOperateError,
                                     'list index out of range'):
            temp_list.index(-1)

        with self.assertRaisesRegexp(LinkedListOperateError,
                                     'list index out of range'):
            temp_list.index(4)
        '''step 3'''
        value = temp_list.index(0)
        self.assertEqual(value, 1, "value_info " + str(value))
        '''step 4'''
        value = temp_list.index(3)
        self.assertEqual(value, 'b', "value_info " + str(value))
예제 #12
0
    def test_find_node(self):
        '''
        case9:测试find_node函数

        1、当链表为空时,调用find_node函数,抛出指定异常        
        2、原链表存在4个元素[1,2,'a','b'],指定索引index=-1或4元素,抛出指定异常                
        3、原链表存在4个元素[1,2,'a','b'],指定索引index=0,找到节点0
        4、原链表存在4个元素[1,2,'a','b'],指定索引index=3,找到节点3        
        '''
        '''step 1'''
        temp_list = Llist()
        with self.assertRaisesRegexp(LinkedListOperateError, 'list is empty'):
            temp_list.find_node(1)
        '''step 2'''
        temp_list.append(1)
        temp_list.append(2)
        temp_list.append('a')
        temp_list.append('b')
        with self.assertRaisesRegexp(LinkedListOperateError,
                                     'list index out of range'):
            temp_list.find_node(-1)

        with self.assertRaisesRegexp(LinkedListOperateError,
                                     'list index out of range'):
            temp_list.find_node(4)
        '''step 3'''
        p = temp_list.find_node(0)
        value = p.element
        self.assertEqual(value, 1, "value_info " + str(value))
        '''step 4'''
        p = temp_list.find_node(3)
        value = p.element
        self.assertEqual(value, 'b', "value_info " + str(value))
예제 #13
0
    def test_middle_pop(self):
        '''
        case8:测试middle_pop函数

        1、当被插入元素链表length=2,抛出指定异常        
        2、原链表存在4个元素[1,2,'a','b'],指定删除index=0或3元素,抛出指定异常        
        3、原链表存在4个元素[1,2,'a','b'],删除index=2元素,删除元素为'a'        
        4、原链表存在3个元素[1,2,'b'],删除index=1元素,删除元素为2
        '''
        '''step 1'''
        temp_list = Llist()
        temp_list.append(1)
        temp_list.append(2)
        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'the length of list is less than 3,can not execute middle_pop'
        ):
            temp_list.middle_pop(1)
        '''step 2'''
        temp_list.append('a')
        temp_list.append('b')
        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'the input index can not execute middle_pop'):
            temp_list.middle_pop(0)

        with self.assertRaisesRegexp(
                LinkedListOperateError,
                'the input index can not execute middle_pop'):
            temp_list.middle_pop(3)
        '''step 3'''
        value = temp_list.middle_pop(2)
        self.assertEqual(value, 'a', "value_info " + str(value))
        '''step 4'''
        value = temp_list.middle_pop(1)
        self.assertEqual(value, 2, "value_info " + str(value))