예제 #1
0
 def test_clear(self):
     c = cache.LinkedSet()
     c.append_top(1)
     c.append_top(2)
     self.assertEqual(len(c), 2)
     c.clear()
     self.assertEqual(len(c), 0)
     self.assertEqual(list(c), [])
     c.clear()
예제 #2
0
 def test_clear(self):
     c = cache.LinkedSet()
     c.append_top(1)
     c.append_top(2)
     assert len(c) == 2
     c.clear()
     assert len(c) == 0
     assert list(c) == []
     c.clear()
예제 #3
0
 def test_append_bottom(self):
     c = cache.LinkedSet()
     c.append_bottom(1)
     self.assertEqual(len(c), 1)
     self.assertEqual(list(c), [1])
     c.append_bottom(2)
     self.assertEqual(len(c), 2)
     self.assertEqual(list(c), [1, 2])
     c.append_bottom(3)
     self.assertEqual(len(c), 3)
     self.assertEqual(list(c), [1, 2, 3])
     self.assertTrue(self.link_consistency(c))
     self.assertRaises(KeyError, c.append_top, 2)
예제 #4
0
 def test_append_bottom(self):
     c = cache.LinkedSet()
     c.append_bottom(1)
     assert len(c) == 1
     assert list(c) == [1]
     c.append_bottom(2)
     assert len(c) == 2
     assert list(c) == [1, 2]
     c.append_bottom(3)
     assert len(c) == 3
     assert list(c) == [1, 2, 3]
     assert self.link_consistency(c)
     with pytest.raises(KeyError):
         c.append_top(2)
예제 #5
0
 def test_move_to_bottom(self):
     c = cache.LinkedSet()
     c.append_top(1)
     c.move_to_bottom(1)
     self.assertEqual(list(c), [1])
     c.append_bottom(2)
     c.move_to_bottom(2)
     self.assertEqual(list(c), [1, 2])
     c.move_to_bottom(1)
     self.assertEqual(list(c), [2, 1])
     c.append_top(3)
     c.move_to_bottom(1)
     self.assertEqual(list(c), [3, 2, 1])
     self.assertTrue(self.link_consistency(c))
예제 #6
0
 def test_move_to_bottom(self):
     c = cache.LinkedSet()
     c.append_top(1)
     c.move_to_bottom(1)
     assert list(c) == [1]
     c.append_bottom(2)
     c.move_to_bottom(2)
     assert list(c) == [1, 2]
     c.move_to_bottom(1)
     assert list(c) == [2, 1]
     c.append_top(3)
     c.move_to_bottom(1)
     assert list(c) == [3, 2, 1]
     assert self.link_consistency(c)
예제 #7
0
 def test_pop_bottom(self):
     c = cache.LinkedSet([1, 2, 3])
     evicted = c.pop_bottom()
     assert evicted == 3
     assert list(c) == [1, 2]
     assert self.link_consistency(c)
     evicted = c.pop_bottom()
     assert evicted == 2
     assert list(c) == [1]
     assert self.link_consistency(c)
     evicted = c.pop_bottom()
     assert evicted == 1
     assert list(c) == []
     evicted = c.pop_bottom()
     assert evicted is None
     assert list(c) == []
예제 #8
0
 def test_pop_top(self):
     c = cache.LinkedSet([1, 2, 3])
     evicted = c.pop_top()
     assert evicted == 1
     assert list(c) == [2, 3]
     assert self.link_consistency(c)
     evicted = c.pop_top()
     assert evicted == 2
     assert list(c) == [3]
     assert self.link_consistency(c)
     evicted = c.pop_top()
     assert evicted == 3
     assert list(c) == []
     evicted = c.pop_top()
     assert evicted == None
     assert list(c) == []
예제 #9
0
 def test_pop_bottom(self):
     c = cache.LinkedSet([1, 2, 3])
     evicted = c.pop_bottom()
     self.assertEqual(evicted, 3)
     self.assertEqual(list(c), [1, 2])
     self.assertTrue(self.link_consistency(c))
     evicted = c.pop_bottom()
     self.assertEqual(evicted, 2)
     self.assertEqual(list(c), [1])
     self.assertTrue(self.link_consistency(c))
     evicted = c.pop_bottom()
     self.assertEqual(evicted, 1)
     self.assertEqual(list(c), [])
     evicted = c.pop_bottom()
     self.assertEqual(evicted, None)
     self.assertEqual(list(c), [])
예제 #10
0
 def test_move_up(self):
     c = cache.LinkedSet()
     c.append_bottom(1)
     c.move_up(1)
     self.assertEqual(list(c), [1])
     c.append_bottom(2)
     c.move_up(1)
     self.assertEqual(list(c), [1, 2])
     c.move_up(2)
     self.assertEqual(list(c), [2, 1])
     c.append_bottom(3)
     c.move_up(3)
     self.assertEqual(list(c), [2, 3, 1])
     c.move_up(3)
     self.assertEqual(list(c), [3, 2, 1])
     self.assertTrue(self.link_consistency(c))
     self.assertRaises(KeyError, c.move_up, 4)
예제 #11
0
 def test_insert_below(self):
     c = cache.LinkedSet([1])
     c.insert_below(1, 2)
     assert list(c) == [1, 2]
     assert self.link_consistency(c)
     c.insert_below(2, 3)
     assert list(c) == [1, 2, 3]
     assert self.link_consistency(c)
     c.insert_below(1, 'a')
     assert list(c) == [1, 'a', 2, 3]
     assert self.link_consistency(c)
     c.insert_below(2, 'b')
     assert list(c) == [1, 'a', 2, 'b', 3]
     assert self.link_consistency(c)
     c.insert_below(3, 'c')
     assert list(c) == [1, 'a', 2, 'b', 3, 'c']
     assert self.link_consistency(c)
예제 #12
0
 def test_insert_above(self):
     c = cache.LinkedSet([3])
     c.insert_above(3, 2)
     assert list(c) == [2, 3]
     assert self.link_consistency(c)
     c.insert_above(2, 1)
     assert list(c) == [1, 2, 3]
     assert self.link_consistency(c)
     c.insert_above(1, "a")
     assert list(c) == ["a", 1, 2, 3]
     assert self.link_consistency(c)
     c.insert_above(2, "b")
     assert list(c) == ["a", 1, "b", 2, 3]
     assert self.link_consistency(c)
     c.insert_above(3, "c")
     assert list(c) == ["a", 1, "b", 2, "c", 3]
     assert self.link_consistency(c)
예제 #13
0
 def test_insert_below(self):
     c = cache.LinkedSet([1])
     c.insert_below(1, 2)
     self.assertEqual(list(c), [1, 2])
     self.assertTrue(self.link_consistency(c))
     c.insert_below(2, 3)
     self.assertEqual(list(c), [1, 2, 3])
     self.assertTrue(self.link_consistency(c))
     c.insert_below(1, 'a')
     self.assertEqual(list(c), [1, 'a', 2, 3])
     self.assertTrue(self.link_consistency(c))
     c.insert_below(2, 'b')
     self.assertEqual(list(c), [1, 'a', 2, 'b', 3])
     self.assertTrue(self.link_consistency(c))
     c.insert_below(3, 'c')
     self.assertEqual(list(c), [1, 'a', 2, 'b', 3, 'c'])
     self.assertTrue(self.link_consistency(c))
예제 #14
0
 def test_insert_above(self):
     c = cache.LinkedSet([3])
     c.insert_above(3, 2)
     self.assertEqual(list(c), [2, 3])
     self.assertTrue(self.link_consistency(c))
     c.insert_above(2, 1)
     self.assertEqual(list(c), [1, 2, 3])
     self.assertTrue(self.link_consistency(c))
     c.insert_above(1, 'a')
     self.assertEqual(list(c), ['a', 1, 2, 3])
     self.assertTrue(self.link_consistency(c))
     c.insert_above(2, 'b')
     self.assertEqual(list(c), ['a', 1, 'b', 2, 3])
     self.assertTrue(self.link_consistency(c))
     c.insert_above(3, 'c')
     self.assertEqual(list(c), ['a', 1, 'b', 2, 'c', 3])
     self.assertTrue(self.link_consistency(c))
예제 #15
0
 def test_insert_above(self):
     c = cache.LinkedSet([3])
     c.insert_above(3, 2)
     assert list(c) == [2, 3]
     assert self.link_consistency(c)
     c.insert_above(2, 1)
     assert list(c) == [1, 2, 3]
     assert self.link_consistency(c)
     c.insert_above(1, 'a')
     assert list(c) == ['a', 1, 2, 3]
     assert self.link_consistency(c)
     c.insert_above(2, 'b')
     assert list(c) == ['a', 1, 'b', 2, 3]
     assert self.link_consistency(c)
     c.insert_above(3, 'c')
     assert list(c) == ['a', 1, 'b', 2, 'c', 3]
     assert self.link_consistency(c)
예제 #16
0
 def test_insert_below(self):
     c = cache.LinkedSet([1])
     c.insert_below(1, 2)
     assert list(c) == [1, 2]
     assert self.link_consistency(c)
     c.insert_below(2, 3)
     assert list(c) == [1, 2, 3]
     assert self.link_consistency(c)
     c.insert_below(1, "a")
     assert list(c) == [1, "a", 2, 3]
     assert self.link_consistency(c)
     c.insert_below(2, "b")
     assert list(c) == [1, "a", 2, "b", 3]
     assert self.link_consistency(c)
     c.insert_below(3, "c")
     assert list(c) == [1, "a", 2, "b", 3, "c"]
     assert self.link_consistency(c)
예제 #17
0
 def test_move_up(self):
     c = cache.LinkedSet()
     c.append_bottom(1)
     c.move_up(1)
     assert list(c) == [1]
     c.append_bottom(2)
     c.move_up(1)
     assert list(c) == [1, 2]
     c.move_up(2)
     assert list(c) == [2, 1]
     c.append_bottom(3)
     c.move_up(3)
     assert list(c) == [2, 3, 1]
     c.move_up(3)
     assert list(c) == [3, 2, 1]
     assert self.link_consistency(c)
     with pytest.raises(KeyError):
         c.move_up(4)
예제 #18
0
 def test_move_down(self):
     c = cache.LinkedSet()
     c.append_top(1)
     c.move_down(1)
     self.assertEqual(list(c), [1])
     c.append_top(2)
     c.move_down(1)
     self.assertEqual(list(c), [2, 1])
     c.move_down(2)
     self.assertEqual(list(c), [1, 2])
     c.move_down(2)
     self.assertEqual(list(c), [1, 2])
     c.append_top(3)
     self.assertEqual(list(c), [3, 1, 2])
     c.move_down(3)
     self.assertEqual(list(c), [1, 3, 2])
     c.move_down(3)
     self.assertEqual(list(c), [1, 2, 3])
     self.assertTrue(self.link_consistency(c))
     self.assertRaises(KeyError, c.move_down, 4)
예제 #19
0
 def test_move_down(self):
     c = cache.LinkedSet()
     c.append_top(1)
     c.move_down(1)
     assert list(c) == [1]
     c.append_top(2)
     c.move_down(1)
     assert list(c) == [2, 1]
     c.move_down(2)
     assert list(c) == [1, 2]
     c.move_down(2)
     assert list(c) == [1, 2]
     c.append_top(3)
     assert list(c) == [3, 1, 2]
     c.move_down(3)
     assert list(c) == [1, 3, 2]
     c.move_down(3)
     assert list(c) == [1, 2, 3]
     assert self.link_consistency(c)
     with pytest.raises(KeyError):
         c.move_down(4)
예제 #20
0
 def test_duplicated_elements(self):
     self.assertRaises(ValueError, cache.LinkedSet, iterable=[1, 1, 2])
     self.assertRaises(ValueError,
                       cache.LinkedSet,
                       iterable=[1, None, None])
     self.assertIsNotNone(cache.LinkedSet(iterable=[1, 0, None]))
예제 #21
0
 def test_duplicated_elements(self):
     with pytest.raises(ValueError):
         cache.LinkedSet(iterable=[1, 1, 2])
         cache.LinkedSet(iterable=[1, None, None])
     assert cache.LinkedSet(iterable=[1, 0, None]) is not None