def test_insert_r_third_3(self): sl = SkipList() sl.insert( 1 ) sl.insert( 2, 1 ) sl.insert( 3, 0 ) self.assertEqual(sl.get_at(0).skiplist.count(None), sl.max_height-1) self.assertEqual(sl.get_at(1).skiplist.count(None), 1) self.assertEqual(sl.get_at(2).skiplist.count(None), 1)
def test_insert_r_third_3(self): sl = SkipList() sl.insert(1) sl.insert(2, 1) sl.insert(3, 0) self.assertEqual(sl.get_at(0).skiplist.count(None), sl.max_height - 1) self.assertEqual(sl.get_at(1).skiplist.count(None), 1) self.assertEqual(sl.get_at(2).skiplist.count(None), 1)
def test_insert_r_index_2(self): sl = SkipList() sl.insert(1, sl.max_height) sl.insert(2, 0) sl.insert(3, 1) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 2) self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(2).skipindex[0], 1)
def test_insert_r_index_2(self): sl = SkipList() sl.insert( 1, sl.max_height ) sl.insert( 2, 0 ) sl.insert( 3, 1 ) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 2) self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(2).skipindex[0], 1)
def test_get_at_3(self): sl = SkipList() sl.insert(1, 2) sl.insert(2, 0) sl.insert(3, 1) self.assertEqual(sl.get_at(0).data, 1) self.assertEqual(sl.get_at(1).data, 2) self.assertEqual(sl.get_at(2).data, 3) self.assertIsNone(sl.get_at(3))
def test_get_at_3(self): sl = SkipList() sl.insert( 1, 2 ) sl.insert( 2, 0 ) sl.insert( 3, 1 ) self.assertEqual(sl.get_at(0).data, 1) self.assertEqual(sl.get_at(1).data, 2) self.assertEqual(sl.get_at(2).data, 3) self.assertIsNone(sl.get_at(3))
def test_insert_r_third_1(self): sl = SkipList() sl.insert( 3 ) sl.insert( 2 ) sl.insert( 1 ) self.assertEqual(sl.head.data, 1) self.assertEqual(sl.head.skiplist[0].data, 2) self.assertEqual(sl.head.skiplist[0].skiplist[0].data, 3) self.assertEqual(sl.get_at(0).skiplist.count(None), 0) self.assertEqual(sl.get_at(1).skiplist.count(None), 0) self.assertEqual(sl.get_at(2).skiplist.count(None), sl.max_height+1)
def test_insert_r_third_1(self): sl = SkipList() sl.insert(3) sl.insert(2) sl.insert(1) self.assertEqual(sl.head.data, 1) self.assertEqual(sl.head.skiplist[0].data, 2) self.assertEqual(sl.head.skiplist[0].skiplist[0].data, 3) self.assertEqual(sl.get_at(0).skiplist.count(None), 0) self.assertEqual(sl.get_at(1).skiplist.count(None), 0) self.assertEqual(sl.get_at(2).skiplist.count(None), sl.max_height + 1)
def test_remove_r_middle_2(self): sl = SkipList() sl.insert( 1, 3 ) sl.insert( 2, 0 ) sl.insert( 3, 0 ) sl.insert( 4, 2 ) sl.insert( 5, 0 ) sl.insert( 6, 3 ) sl.remove( 4 ) self.assertEqual(sl.head.data, 1) self.assertEqual(sl.get_at(0).skiplist[2].data, 6) self.assertEqual(sl.get_at(0).skiplist[1].data, 6) self.assertEqual(sl.get_at(2).skiplist[0].data, 5)
def test_remove_r_middle_2(self): sl = SkipList() sl.insert(1, 3) sl.insert(2, 0) sl.insert(3, 0) sl.insert(4, 2) sl.insert(5, 0) sl.insert(6, 3) sl.remove(4) self.assertEqual(sl.head.data, 1) self.assertEqual(sl.get_at(0).skiplist[2].data, 6) self.assertEqual(sl.get_at(0).skiplist[1].data, 6) self.assertEqual(sl.get_at(2).skiplist[0].data, 5)
def test_remove_r_index_1(self): sl = SkipList() sl.insert(1, 2) sl.insert(2, 0) sl.insert(3, 1) sl.insert(4, 0) sl.insert(5, 2) sl.remove(3) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 3) self.assertEqual(sl.get_at(0).skipindex[2], 3) self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(2).skipindex[0], 1)
def test_remove_r_middle_1(self): sl = SkipList() sl.insert( 3 ) sl.insert( 2 ) sl.insert( 1 ) sl.remove( 2 ) self.assertEqual(sl.head.data, 1) self.assertEqual(sl.get_at(1).data, 3) self.assertIsNone(sl.find(2)) sl.insert( 2 ) self.assertEqual(sl.get_at(1).data, 2) self.assertEqual(sl.get_at(2).data, 3)
def test_remove_r_middle_1(self): sl = SkipList() sl.insert(3) sl.insert(2) sl.insert(1) sl.remove(2) self.assertEqual(sl.head.data, 1) self.assertEqual(sl.get_at(1).data, 3) self.assertIsNone(sl.find(2)) sl.insert(2) self.assertEqual(sl.get_at(1).data, 2) self.assertEqual(sl.get_at(2).data, 3)
def test_remove_r_index_1(self): sl = SkipList() sl.insert( 1, 2 ) sl.insert( 2, 0 ) sl.insert( 3, 1 ) sl.insert( 4, 0 ) sl.insert( 5, 2 ) sl.remove( 3 ) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 3) self.assertEqual(sl.get_at(0).skipindex[2], 3) self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(2).skipindex[0], 1)
def test_insert_r_second_2(self): sl = SkipList() sl.insert(1, 0) sl.insert(2, 0) self.assertEqual(sl.head.data, 1) self.assertEqual(sl.head.skiplist[0].data, 2) self.assertEqual(sl.get_at(0).skiplist.count(None), sl.max_height) self.assertEqual(sl.get_at(1).skiplist.count(None), 1)
def test_insert_r_second_2(self): sl = SkipList() sl.insert( 1, 0 ) sl.insert( 2, 0 ) self.assertEqual(sl.head.data, 1) self.assertEqual(sl.head.skiplist[0].data, 2) self.assertEqual(sl.get_at(0).skiplist.count(None), sl.max_height) self.assertEqual(sl.get_at(1).skiplist.count(None), 1)
def test_remove_r_index_5(self): # remove last sl = SkipList() sl.insert(1, 2) sl.insert(2, 1) sl.insert(3, 0) sl.insert(4, 2) sl.remove(4) sl.insert(4, 2) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 1) self.assertEqual(sl.get_at(0).skipindex[2], 3) self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(1).skipindex[1], 2) self.assertEqual(sl.get_at(2).skipindex[0], 1)
def test_remove_r_index_5(self): # remove last sl = SkipList() sl.insert( 1, 2 ) sl.insert( 2, 1 ) sl.insert( 3, 0 ) sl.insert( 4, 2 ) sl.remove( 4 ) sl.insert( 4, 2 ) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 1) self.assertEqual(sl.get_at(0).skipindex[2], 3) self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(1).skipindex[1], 2) self.assertEqual(sl.get_at(2).skipindex[0], 1)
def test_skip_1(self): sl = SkipList() sl.insert(3, 3) sl.insert(2, 1) sl.insert(1, 3) self.assertEqual(sl.head.level, 3) self.assertEqual(sl.find(2), 2) self.assertEqual(sl.get_at(1).level, 3) self.assertEqual(sl.head.skiplist[0].data, 2) self.assertEqual(sl.head.skiplist[1].data, 2)
def test_skip_1(self): sl = SkipList() sl.insert( 3, 3 ) sl.insert( 2, 1 ) sl.insert( 1, 3 ) self.assertEqual(sl.head.level, 3) self.assertEqual(sl.find(2), 2) self.assertEqual(sl.get_at(1).level, 3) self.assertEqual(sl.head.skiplist[0].data, 2) self.assertEqual(sl.head.skiplist[1].data, 2)
def test_relevel(self): sl = SkipList() sl.insert(1, 3) sl.insert(2, 3) sl.insert(3, 2) sl.relevel() self.assertEqual(sl.get_at(0).level, 3) self.assertEqual(sl.get_at(0).skiplist[0].data, 2) self.assertEqual(sl.get_at(0).skiplist[1].data, 3) self.assertEqual(sl.get_at(0).skiplist[2], None) self.assertEqual(sl.get_at(0).skiplist[3], None) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 2) self.assertEqual(sl.get_at(1).level, 0) self.assertEqual(sl.get_at(1).skiplist[0].data, 3) self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(2).level, 1) self.assertEqual(sl.get_at(2).skiplist[0], None) self.assertEqual(sl.get_at(2).skiplist[1], None)
def test_relevel(self): sl = SkipList() sl.insert( 1, 3 ) sl.insert( 2, 3 ) sl.insert( 3, 2 ) sl.relevel() self.assertEqual(sl.get_at(0).level, 3) self.assertEqual(sl.get_at(0).skiplist[0].data, 2) self.assertEqual(sl.get_at(0).skiplist[1].data, 3) self.assertEqual(sl.get_at(0).skiplist[2], None) self.assertEqual(sl.get_at(0).skiplist[3], None) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 2) self.assertEqual(sl.get_at(1).level, 0) self.assertEqual(sl.get_at(1).skiplist[0].data, 3) self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(2).level, 1) self.assertEqual(sl.get_at(2).skiplist[0], None) self.assertEqual(sl.get_at(2).skiplist[1], None)
def test_insert_r_index_4(self): # middle insert sl = SkipList() sl.insert( 1, sl.max_height ) sl.insert( 2, 0 ) sl.insert( 4, 1 ) sl.insert( 5, sl.max_height ) sl.insert( 3, 2 ) self.assertEqual(sl.get_at(3).skipindex[0], 1) self.assertEqual(sl.get_at(3).skipindex[1], 1) # ***** self.assertEqual(sl.get_at(2).skipindex[0], 1) self.assertEqual(sl.get_at(2).skipindex[1], 1) self.assertEqual(sl.get_at(2).skipindex[2], 2) # ***** self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 2) self.assertEqual(sl.get_at(0).skipindex[2], 2) self.assertEqual(sl.get_at(0).skipindex[sl.max_height], 4)
def test_insert_r_index_4(self): # middle insert sl = SkipList() sl.insert(1, sl.max_height) sl.insert(2, 0) sl.insert(4, 1) sl.insert(5, sl.max_height) sl.insert(3, 2) self.assertEqual(sl.get_at(3).skipindex[0], 1) self.assertEqual(sl.get_at(3).skipindex[1], 1) # ***** self.assertEqual(sl.get_at(2).skipindex[0], 1) self.assertEqual(sl.get_at(2).skipindex[1], 1) self.assertEqual(sl.get_at(2).skipindex[2], 2) # ***** self.assertEqual(sl.get_at(1).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 2) self.assertEqual(sl.get_at(0).skipindex[2], 2) self.assertEqual(sl.get_at(0).skipindex[sl.max_height], 4)
def test_get_at_1(self): sl = SkipList() self.assertIsNone(sl.get_at(0)) self.assertIsNone(sl.get_at(1))
def test_relevel_2(self): sl = SkipList( 3 ) sl.insert( 1 ) sl.insert( 2 ) sl.insert( 3 ) sl.insert( 4 ) sl.insert( 5 ) sl.insert( 6 ) sl.insert( 7 ) sl.insert( 8 ) sl.insert( 9 ) sl.relevel() self.assertEqual(sl.get_at(0).level, 3) self.assertEqual(sl.get_at(0).skiplist[0].data, 2) self.assertEqual(sl.get_at(0).skiplist[1].data, 3) self.assertEqual(sl.get_at(0).skiplist[2].data, 5) self.assertEqual(sl.get_at(0).skiplist[3].data, 9) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 2) self.assertEqual(sl.get_at(0).skipindex[2], 4) self.assertEqual(sl.get_at(0).skipindex[3], 8) self.assertEqual(sl.get_at(2).level, 1) self.assertEqual(sl.get_at(2).skiplist[1].data, 5) self.assertEqual(sl.get_at(4).level, 2) self.assertEqual(sl.get_at(4).skiplist[1].data, 7) self.assertEqual(sl.get_at(4).skiplist[2].data, 9) self.assertEqual(sl.get_at(4).skipindex[0], 1) self.assertEqual(sl.get_at(4).skipindex[1], 2) self.assertEqual(sl.get_at(4).skipindex[2], 4)
def test_relevel_2(self): sl = SkipList(3) sl.insert(1) sl.insert(2) sl.insert(3) sl.insert(4) sl.insert(5) sl.insert(6) sl.insert(7) sl.insert(8) sl.insert(9) sl.relevel() self.assertEqual(sl.get_at(0).level, 3) self.assertEqual(sl.get_at(0).skiplist[0].data, 2) self.assertEqual(sl.get_at(0).skiplist[1].data, 3) self.assertEqual(sl.get_at(0).skiplist[2].data, 5) self.assertEqual(sl.get_at(0).skiplist[3].data, 9) self.assertEqual(sl.get_at(0).skipindex[0], 1) self.assertEqual(sl.get_at(0).skipindex[1], 2) self.assertEqual(sl.get_at(0).skipindex[2], 4) self.assertEqual(sl.get_at(0).skipindex[3], 8) self.assertEqual(sl.get_at(2).level, 1) self.assertEqual(sl.get_at(2).skiplist[1].data, 5) self.assertEqual(sl.get_at(4).level, 2) self.assertEqual(sl.get_at(4).skiplist[1].data, 7) self.assertEqual(sl.get_at(4).skiplist[2].data, 9) self.assertEqual(sl.get_at(4).skipindex[0], 1) self.assertEqual(sl.get_at(4).skipindex[1], 2) self.assertEqual(sl.get_at(4).skipindex[2], 4)
def test_get_at_2(self): sl = SkipList() self.assertIsNone(sl.get_at(-1))