prepared for release 0.5
[PyX/mjg.git] / test / unit / test_attr.py
blob31daf080170dcae27ed9427addf44f82ac297b7f
1 import unittest
3 import pyx
4 from pyx.attr import *
6 class A1(attr): pass
7 class B1(attr): pass
8 class C1(attr): pass
10 class A2(exclusiveattr): pass
11 class B2(exclusiveattr): pass
12 class C2(exclusiveattr): pass
14 class A3(sortbeforeattr): pass
15 class B3(sortbeforeattr): pass
16 class C3(attr): pass
18 class A4(sortbeforeexclusiveattr): pass
19 class B4(sortbeforeexclusiveattr): pass
20 class C4(attr): pass
23 class AttrTestCase(unittest.TestCase):
25 def testCheck(self):
26 checkattrs([A1(), B1(), A1()], [A1, B1])
27 try:
28 checkattrs([A1(), B1(), A1()], [A1, C1])
29 assert 0, "should have failed"
30 except TypeError:
31 pass
33 def testMerge(self):
34 a1 = A1()
35 a2 = A1()
36 b1 = B1()
37 b2 = B1()
38 c1 = C1()
39 c2 = C1()
40 assert mergeattrs([a1, b2, b1, c2, a2, c1]) == [a1, b2, b1, c2, a2, c1]
42 def testExclusive(self):
43 a1 = A2(A2)
44 a2 = A2(A2)
45 b1 = B2(B2)
46 b2 = B2(B2)
47 c1 = C2(C2)
48 c2 = C2(C2)
49 assert mergeattrs([a1, b2, b1, c2, a2, c1]) == [b1, a2, c1]
51 def testSort(self):
52 a1 = A3((B3, C3))
53 a2 = A3((B3, C3))
54 b1 = B3((C3))
55 b2 = B3((C3))
56 c1 = C3()
57 c2 = C3()
58 assert mergeattrs([a1, b2, b1, c2, a2, c1]) == [a1, a2, b2, b1, c2, c1]
60 def testExclusiveSort(self):
61 a1 = A4(A4, (B4, C4))
62 a2 = A4(A4, (B4, C4))
63 b1 = B4(B4, (C4))
64 b2 = B4(B4, (C4))
65 c1 = C4()
66 c2 = C4()
67 assert mergeattrs([b2, a1, b1, c2, a2, c1]) == [a2, b1, c2, c1]
70 suite = unittest.TestSuite((unittest.makeSuite(AttrTestCase, 'test'), ))
72 if __name__ == "__main__":
73 runner = unittest.TextTestRunner()
74 runner.run(suite)