Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
    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))
Ejemplo n.º 6
0
    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))
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
 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)
Ejemplo n.º 16
0
 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)
Ejemplo n.º 17
0
    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)
Ejemplo n.º 18
0
    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)
Ejemplo n.º 19
0
 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)
Ejemplo n.º 20
0
 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)
Ejemplo n.º 21
0
    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)
Ejemplo n.º 22
0
    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)
Ejemplo n.º 23
0
    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)
Ejemplo n.º 24
0
    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)
Ejemplo n.º 25
0
    def test_get_at_1(self):
        sl = SkipList()

        self.assertIsNone(sl.get_at(0))
        self.assertIsNone(sl.get_at(1))
Ejemplo n.º 26
0
    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)
Ejemplo n.º 27
0
    def test_get_at_1(self):
        sl = SkipList()

        self.assertIsNone(sl.get_at(0))
        self.assertIsNone(sl.get_at(1))
Ejemplo n.º 28
0
    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)
Ejemplo n.º 29
0
    def test_get_at_2(self):
        sl = SkipList()

        self.assertIsNone(sl.get_at(-1))
Ejemplo n.º 30
0
    def test_get_at_2(self):
        sl = SkipList()

        self.assertIsNone(sl.get_at(-1))