-
Notifications
You must be signed in to change notification settings - Fork 84
/
parentlist_test.py
78 lines (63 loc) · 2.36 KB
/
parentlist_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import unittest
from blivet.devices import ParentList
from blivet.devices import Device
class ParentListTestCase(unittest.TestCase):
def testParentList(self):
items = list(range(5))
length = len(items)
pl = ParentList(items=items)
self.assertEqual(len(pl), length)
self.assertEqual(list(pl), items)
self.assertEqual(hasattr(pl, "index"), False)
self.assertEqual(hasattr(pl, "insert"), False)
self.assertEqual(hasattr(pl, "pop"), False)
self.assertEqual(pl[:], pl.items)
with self.assertRaises(TypeError):
pl[2] = 99
newval = 99
self.assertEqual(99 in pl, False)
pl.append(newval)
length += 1
self.assertEqual(len(pl), length)
self.assertEqual(newval in pl, True)
val = 3
self.assertEqual(val in pl, True)
pl.remove(val)
length -= 1
self.assertEqual(len(pl), length)
self.assertEqual(val in pl, False)
#
# verify that add/remove functions work as expected
#
def pre_add(item):
if item > 32:
raise ValueError("only numbers less than 32 are allowed")
def pre_remove(item):
# pylint: disable=unused-argument
if len(pl) - 1 < 3:
raise RuntimeError("list can never have fewer than 3 items")
pl = ParentList(items=items, appendfunc=pre_add, removefunc=pre_remove)
with self.assertRaises(ValueError):
pl.append(33)
pl.remove(4)
pl.remove(3)
with self.assertRaises(RuntimeError):
pl.remove(2)
def testDeviceParents(self):
""" Verify that Device.parents functions as expected. """
dev1 = Device("dev1", [])
self.assertEqual(len(dev1.parents), 0)
self.assertIsInstance(dev1.parents, ParentList)
dev2 = Device("dev2")
dev3 = Device("dev3", [dev1])
self.assertEqual(len(dev3.parents), 1)
dev3.parents.remove(dev1)
self.assertEqual(len(dev3.parents), 0)
dev3.parents.append(dev1)
self.assertEqual(len(dev3.parents), 1)
dev3.parents.append(dev2)
self.assertEqual(len(dev3.parents), 2)
dev3.parents = [dev1, dev2]
self.assertEqual(len(dev3.parents), 2)
dev3.parents = []
self.assertEqual(len(dev3.parents), 0)