1 """
2 Test cases for ldaptor.attributeset
3 """
4
5 from twisted.trial import unittest
6 import sets
7 from ldaptor import attributeset
8
39
45
47 a = attributeset.LDAPAttributeSet('k', ['b', 'c', 'd'])
48 b = attributeset.LDAPAttributeSet('k', ['b', 'c', 'e'])
49 self.assertEquals(a | b, sets.Set(['b', 'c', 'd', 'e']))
50
55
60
64 m1 = Magic()
65 a = attributeset.LDAPAttributeSet('k', ['b', 'c', 'd', m1])
66 b = a.__copy__()
67 self.assertEquals(a, b)
68 self.assertNotIdentical(a, b)
69
70 magicFromA = [val for val in a if isinstance(val, Magic)][0]
71 magicFromB = [val for val in b if isinstance(val, Magic)][0]
72 self.assertEquals(magicFromA, magicFromB)
73 self.assertIdentical(magicFromA, magicFromB)
74
75 a.update('x')
76 self.assertEquals(a, sets.Set(['b', 'c', 'd', m1, 'x']))
77 self.assertEquals(b, sets.Set(['b', 'c', 'd', m1]))
78
80 class Magic:
81 def __eq__(self, other):
82 return isinstance(other, self.__class__)
83 def __hash__(self):
84 return 42
85 m1 = Magic()
86 a = attributeset.LDAPAttributeSet('k', ['a', m1])
87 b = a.__deepcopy__({})
88 self.assertEquals(a, b)
89 self.assertNotIdentical(a, b)
90
91 magicFromA = [val for val in a if isinstance(val, Magic)][0]
92 magicFromB = [val for val in b if isinstance(val, Magic)][0]
93 self.assertEquals(magicFromA, magicFromB)
94 self.assertNotIdentical(magicFromA, magicFromB)
95
96 a.update('x')
97 self.assertEquals(a, sets.Set(['a', m1, 'x']))
98 self.assertEquals(b, sets.Set(['a', m1]))
99