import repository from arizona
[raven.git] / 2.0 / python / test / arizonagroupTest.py
1 #! /bin/env/python
2
3 """
4 <Module>
5    arizonagroupTest
6
7 <Author>
8    Michael White
9
10 <Started>
11    October 14, 2007
12
13 <Purpose>
14    Unit tests for arizonagroup.py
15 """
16
17 import arizonaunittest
18 import arizonagroup
19 import pacman
20
21 class test(arizonaunittest.TestCase):
22    
23    def test_groupunion(self):
24       #Test groups with no overlap
25       smallNums = arizonagroup.groupunion('smallNums', ['evens', 2,4,6,8,10], ['odds', 1,3,5,7,9])
26       expectedValue = ['smallNums' ,2,4,6,8,10,1,3,5,7,9]
27       self.assertEqual(smallNums, expectedValue)
28
29
30       #Test groups that are equal
31       self.assertEqual(arizonagroup.groupunion('newGroup', ['group1', 'a','b','c','d'], ['group1', 'a','b','c','d']), ['newGroup', 'a','b','c','d'])
32
33       #Test groups with some overlap
34       self.assertEqual(arizonagroup.groupunion('unioned group', ['first group', 'first', 'second', 'fifth'], ['second group', 'first', 'third', 'fourth', 'fifth']), ['unioned group', 'first', 'second', 'fifth', 'third', 'fourth'])
35
36       #Test empty groups
37       self.assertEqual(arizonagroup.groupunion('same group', ['group1', '1', 'a', '2'], ['emptygroup']), ['same group', '1', 'a', '2'])
38       self.assertEqual(arizonagroup.groupunion('same group', ['group1', '1', 'a', '2'], []), ['same group', '1', 'a', '2'])
39       
40       
41       
42
43
44    def test_groupintersect(self):
45    
46       #Test groups with no overlap
47       self.assertEqual(arizonagroup.groupintersect('nothing', ['evens', 2, 4, 6, 8, 10], ['odds', 1,3,5,7,9]), ['nothing'])
48      
49       #Test groups that are equal
50       self.assertEqual(arizonagroup.groupintersect('same group', ['group a', 'a', 1, 'b', 2], ['group b' , 'a', 1, 'b', 2]), ['same group', 'a', 1, 'b', 2])
51      
52       #Test groups with some overlap
53       self.assertEqual(arizonagroup.groupintersect('intersected group', ['first group', 1, 2, 4, 5], ['second group', 1, 3, 5, 6, 7]), ['intersected group', 1, 5])
54      
55       #Test empty groups
56       self.assertEqual(arizonagroup.groupintersect('empty group', ['empty'], ['not empty', 1, 5, 6] ), ['empty group'])
57       self.assertEqual(arizonagroup.groupintersect('empty group', ['not empty', 1, 5, 6], ['empty'] ), ['empty group'])
58
59
60
61
62
63    def test_groupexclude(self):
64       #Test exclusion when group contains elements to be excluded
65       A = ['group', 1, 2, 3, 4, 5, 6, 7, 8]
66       arizonagroup.groupexclude(A , [2, 4, 7]), 
67       self.assertEqual(A, ['group', 1,3,5,6,8])
68
69       #Test exclusion when group does not contain elements to be excluded
70       A = ['group1', 1, 2, 3, 4, 'juice']
71       arizonagroup.groupexclude(A , [57, 52, 'orange', 'HUGE GUTS'])
72       self.assertEqual(A, ['group1', 1, 2, 3, 4, 'juice'])
73
74
75
76
77
78         
79    def test_groupcomplement(self):
80       #Test exclusion when group contains elements to be excluded
81       self.assertEqual(arizonagroup.groupcomplement('newGroup' ,['group', 1,2,3,4,5,6,7,8] , ['subgroup', 2, 4, 7]), ['newGroup', 1,3,5,6,8])
82
83       #Test exclusion when group does not contain elements to be excluded
84       self.assertEqual(arizonagroup.groupcomplement('group2', ['group1', 1, 2, 3, 4, 'juice'], ['not a subgroup', 57, 52, 'orange', 'HUGE GUTS']), ['group2', 1, 2, 3, 4, 'juice'])
85       
86       self.assertEqual(arizonagroup.groupcomplement('group2', ['group1', 1, 2, 3, 4, 'juice'], ['partial', 2, 4, 58, 'DERP']), ['group2', 1, 3, 'juice'])
87
88
89
90
91
92
93    def test_groupsubtract(self):
94       #Test subtract when B is a subset of A
95       A = ['group A', 1, 2, 3, 4, 5, 6]
96       B = ['group B', 2, 4, 6]
97       arizonagroup.groupsubtract(A, B)
98       self.assertEqual(A, ['group A', 1, 3, 5])
99
100       #Test subtract when B intersect A is empty 
101       A = ['group A', 1, 2, 3, 4, 5, 6]
102       B = ['group B', 'apples', 'bananas', 'oranges', 'grapes']
103       arizonagroup.groupsubtract(A, B)
104       self.assertEqual(A, ['group A', 1, 2, 3, 4, 5, 6])
105
106       #Test subtract when A intersect B is non-empty, but B is not a subset of A
107       A = ['group A', 1, 2, 3, 4, 5, 6]
108       B = ['group B', 2, 'love', 3, 'kittens', 4, 'cake']
109       arizonagroup.groupsubtract(A, B)
110       self.assertEqual(A, ['group A', 1, 5, 6])
111
112
113
114
115    olddict = pacman.GroupFileParse("groups.dtd", "white.groups.pacman")
116    newdict = arizonagroupparse.GroupFileParse("groups.dtd", "white.groups.pacman")
117
118    #Test file parsing methods
119    def test_include(self):
120       self.assertEqual(olddict["includegroup1"], newdict["includegroup1"])
121       self.assertEqual(olddict["includegroup2"], newdict["includegroup2"])
122       self.assertEqual(olddict["includegroup3"], newdict["includegroup3"])
123       self.assertEqual(olddict["includegroup4"], newdict["includegroup4"])
124
125
126
127
128
129
130    def test_exclude(self):
131       self.assertEqual(olddict["excludegroup1"], newdict["excludegroup1"])
132       self.assertEqual(olddict["excludegroup2"], newdict["excludegroup2"])
133       self.assertEqual(olddict["excludegroup3"], newdict["excludegroup3"])
134       self.assertEqual(olddict["excludegroup4"], newdict["excludegroup4"])
135
136
137
138
139
140
141    def test_intersect(self):
142       self.assertEqual(olddict["intersectgroup1"], newdict["intersectgroup1"])
143       self.assertEqual(olddict["intersectgroup2"], newdict["intersectgroup2"])
144       self.assertEqual(olddict["intersectgroup3"], newdict["intersectgroup3"])
145       self.assertEqual(olddict["intersectgroup4"], newdict["intersectgroup4"])
146
147
148
149
150
151
152
153
154 if __name__ == "__main__":
155     arizonaunittest.main()