def test_cmp(self): a = sllist(xrange(0, 1100)) b = sllist(xrange(0, 1101)) c = range(0, 1100) self.assertEqual(cmp(a, a), 0) self.assertEqual(cmp(a, b), -1) self.assertEqual(cmp(b, a), 1) self.assertEqual(cmp(a, c), 0) self.assertEqual(cmp(c, a), 0) self.assertEqual(cmp([], []), 0) self.assertEqual(cmp([], a), -1) self.assertEqual(cmp(a, []), 1)
def test_nodeat(self): ref = range(0, 1024, 4) ll = dllist(ref) for idx in xrange(len(ll)): self.assertTrue(isinstance(ll.nodeat(idx), dllistnode)) self.assertEqual(ll.nodeat(idx).value, ref[idx]) for idx in xrange(len(ll)): self.assertTrue(isinstance(ll.nodeat(idx), dllistnode)) self.assertEqual(ll.nodeat(-idx - 1).value, ref[-idx - 1]) self.assertRaises(TypeError, ll.nodeat, None) self.assertRaises(TypeError, ll.nodeat, 'abc') self.assertRaises(IndexError, ll.nodeat, len(ref)) self.assertRaises(IndexError, ll.nodeat, -len(ref) - 1)
def test_getitem(self): ref = range(0, 1024, 4) ll = dllist(ref) for idx in xrange(len(ll)): self.assertFalse(isinstance(ll[idx], dllistnode)) self.assertEqual(ll[idx], ref[idx]) for idx in xrange(len(ll)): self.assertFalse(isinstance(ll[idx], dllistnode)) self.assertEqual(ll[-idx - 1], ref[-idx - 1]) self.assertRaises(TypeError, ll.__getitem__, None) self.assertRaises(TypeError, ll.__getitem__, 'abc') self.assertRaises(IndexError, ll.__getitem__, len(ref)) self.assertRaises(IndexError, ll.__getitem__, -len(ref) - 1)
def test_insert_value_before_first(self): ll = sllist(xrange(4)) ref = sllist([10, 0, 1, 2, 3]) next = ll.nodeat(0) arg_node = sllistnode(10) new_node = ll.insert(arg_node, ll.nodeat(0)) self.assertNotEqual(new_node, arg_node) self.assertEqual(new_node.value, 10) self.assertEqual(new_node.next, next) self.assertEqual(new_node, ll.first) self.assertEqual(ll, ref)
def test_appendleft(self): ll = sllist(xrange(4)) ref = sllist([10, 0, 1, 2, 3]) next = ll.nodeat(0) arg_node = sllistnode(10) new_node = ll.appendleft(arg_node) self.assertNotEqual(new_node, arg_node) self.assertEqual(new_node.value, 10) self.assertEqual(new_node.next, next) self.assertEqual(ll.first, new_node) self.assertEqual(ll, ref)
def test_append(self): ll = sllist(xrange(4)) ref = sllist([0, 1, 2, 3, 10]) prev = ll.nodeat(-1) arg_node = sllistnode(10) new_node = ll.append(arg_node) self.assertNotEqual(new_node, arg_node) self.assertEqual(new_node.value, 10) self.assertEqual(new_node.next, None) self.assertEqual(prev.next, new_node) self.assertEqual(ll.last, new_node) self.assertEqual(ll, ref)
def test_insert_value_before(self): ll = sllist(xrange(4)) ref = sllist([0, 1, 10, 2, 3]) prev = ll.nodeat(1) next = ll.nodeat(2) arg_node = sllistnode(10) new_node = ll.insert(arg_node, ll.nodeat(2)) self.assertNotEqual(new_node, arg_node) self.assertEqual(new_node.value, 10) self.assertEqual(new_node.next, next) self.assertEqual(prev.next, new_node) self.assertEqual(ll, ref)
def test_insert_value_after_last(self): ll = dllist(xrange(4)) ref = dllist([0, 1, 2, 3, 10]) prev = ll.nodeat(3) arg_node = dllistnode(10) new_node = ll.insert(arg_node, after=ll.last) self.assertNotEqual(new_node, arg_node) self.assertEqual(new_node.value, 10) self.assertEqual(new_node.prev, prev) self.assertEqual(new_node.next, None) self.assertEqual(prev.next, new_node) self.assertEqual(new_node, ll.last) self.assertEqual(ll, ref)
def test_insert_value_after(self): ll = dllist(xrange(4)) ref = dllist([0, 1, 10, 2, 3]) prev = ll.nodeat(1) next = ll.nodeat(2) arg_node = dllistnode(10) new_node = ll.insert(arg_node, after=ll.nodeat(1)) self.assertNotEqual(new_node, arg_node) self.assertEqual(new_node.value, 10) self.assertEqual(new_node.prev, prev) self.assertEqual(new_node.next, next) self.assertEqual(prev.next, new_node) self.assertEqual(next.prev, new_node) self.assertEqual(ll, ref)
def test_del(self): ref = range(0, 1024, 4) ll = dllist(ref) del ll[0] del ref[0] self.assertEqual(list(ll), ref) del ll[len(ll) - 1] del ref[len(ref) - 1] self.assertEqual(list(ll), ref) del ll[(len(ll) - 1) // 2] del ref[(len(ref) - 1) // 2] self.assertEqual(list(ll), ref) def del_item(idx): del ll[idx] self.assertRaises(IndexError, del_item, len(ll)) for i in xrange(len(ll)): del ll[0] self.assertEqual(len(ll), 0)