source: wikiextrasplugin/trunk/tracwikiextras/tests/util.py

Last change on this file was 18475, checked in by Ryan J Ollos, 18 months ago

TracWikiExtras 1.3.2dev: Make compatible with Python 3

Refs #14133.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 8.1 KB
Line 
1# -*- coding: utf-8 -*-
2
3import fnmatch
4import os
5import unittest
6
7from tracwikiextras.icons import FUGUE_ICONS
8from tracwikiextras.util import group_over, reduce_names
9
10
11class GroupOverTestCase(unittest.TestCase):
12
13    def test_00(self):
14        t = [] # test vector
15        e = [] # expected result vector
16        r = [] # result vector
17        for i in group_over(t, 0):
18            r.append(i)
19        self.assertEqual(r, e)
20
21    def test_01(self):
22        t = [1]
23        e = [(1,)]
24        r = []
25        for i in group_over(t, 0):
26            r.append(i)
27        self.assertEqual(r, e)
28
29    def test_02(self):
30        t = [1]
31        e = [(1,)]
32        r = []
33        for i in group_over(t, 1):
34            r.append(i)
35        self.assertEqual(r, e)
36
37    def test_03(self):
38        t = [1]
39        e = [(1, None)]
40        r = []
41        for i in group_over(t, 2):
42            r.append(i)
43        self.assertEqual(r, e)
44
45    def test_10(self):
46        t = [1, 2, 3, 4]
47        e = [(1, 3),
48             (2, 4)]
49        r = []
50        for i in group_over(t, 2):
51            r.append(i)
52        self.assertEqual(r, e)
53
54    def test_20(self):
55        t = [1, 2, 3, 4, 5]
56        e = [(1, 4),
57             (2, 5),
58             (3, None)]
59        r = []
60        for i in group_over(t, 2):
61            r.append(i)
62        self.assertEqual(r, e)
63
64    def test_30(self):
65        t = [1, 2, 3, 4, 5, 6, 7, 8, 9]
66        e = [(1, 3),
67             (2, None),
68             (4,),
69             (5, 8),
70             (6, 9),
71             (7, None),]
72        b = [4] # break
73        r = []
74        for i in group_over(t, 2, lambda x: x not in b):
75            r.append(i)
76        self.assertEqual(r, e)
77
78    def test_40(self):
79        t = range(1, 16)
80        e = [(1, 4, 7),
81             (2, 5, None),
82             (3, 6, None),
83             (8,),
84             (9,  None, None),
85             (10,),
86             (11, 12, 13),
87             (14,),
88             (15, None, None),]
89        b = [8, 10, 14] # break
90        r = []
91        for i in group_over(t, 3, lambda x: x not in b):
92            r.append(i)
93        self.assertEqual(r, e)
94
95class ReduceNamesTestCase(unittest.TestCase):
96
97    def test_00(self):
98        names = []
99        expect = names
100        result = reduce_names(names, 0)
101        self.assertEqual(result, expect)
102
103    def test_01(self):
104        names = []
105        expect = names
106        result = reduce_names(names, 1)
107        self.assertEqual(result, expect)
108
109    def test_02(self):
110        names = ['']
111        expect = []
112        result = reduce_names(names, 0)
113        self.assertEqual(result, expect)
114
115    def test_03(self):
116        names = ['']
117        expect = names
118        result = reduce_names(names, 1)
119        self.assertEqual(result, expect)
120
121    def test_10(self):
122        names = ['a']
123        result = reduce_names(names, len(names))
124        expect = names
125        self.assertEqual(result, expect)
126
127    def test_11(self):
128        names = ['a']
129        result = reduce_names(names, 0)
130        expect = []
131        self.assertEqual(result, expect)
132
133    def test_20(self):
134        names = ['a', 'aa']
135        result = reduce_names(names, len(names))
136        result.sort()
137        expect = names
138        self.assertEqual(result, expect)
139
140    def test_21(self):
141        names = ['a', 'aa']
142        result = reduce_names(names, 1)
143        result.sort()
144        expect = ['a']
145        self.assertEqual(result, expect)
146
147    def test_30(self):
148        names = ['a', 'aa', 'ab']
149        result = reduce_names(names, len(names))
150        result.sort()
151        expect = names
152        self.assertEqual(result, expect)
153
154    def test_31(self):
155        names = ['a', 'aa', 'ab']
156        result = reduce_names(names, 1)
157        result.sort()
158        expect = ['a']
159        self.assertEqual(result, expect)
160
161    def test_32(self):
162        names = ['a', 'aa', 'ab']
163        result = reduce_names(names, 2)
164        result.sort()
165        expect = ['a', 'aa']
166        self.assertEqual(result, expect)
167
168    def test_40(self):
169        names = ['a', 'aa', 'ab', 'b', 'bb', 'bc', 'bca']
170        result = reduce_names(names, len(names))
171        result.sort()
172        expect = names
173        self.assertEqual(result, expect)
174
175    def test_41(self):
176        names = ['a', 'aa', 'ab', 'b', 'bb', 'bc', 'bca']
177        result = reduce_names(names, 6)
178        result.sort()
179        expect = ['a', 'aa', 'ab', 'b', 'bb', 'bc']
180        self.assertEqual(result, expect)
181
182    def test_42(self):
183        names = ['a', 'aa', 'ab', 'b', 'bb', 'bc', 'bca']
184        result = reduce_names(names, 5)
185        result.sort()
186        expect = ['a', 'aa', 'ab', 'b', 'bb']
187        self.assertEqual(result, expect)
188
189    def test_43(self):
190        names = ['a', 'aa', 'ab', 'b', 'bb', 'bc', 'bca']
191        result = reduce_names(names, 4)
192        result.sort()
193        expect = ['a', 'aa', 'b', 'bb']
194        self.assertEqual(result, expect)
195
196    def test_44(self):
197        names = ['a', 'aa', 'ab', 'b', 'bb', 'bc', 'bca']
198        result = reduce_names(names, 3)
199        result.sort()
200        expect = ['a', 'aa', 'b']
201        self.assertEqual(result, expect)
202
203    def test_45(self):
204        names = ['a', 'aa', 'ab', 'b', 'bb', 'bc', 'bca']
205        result = reduce_names(names, 2)
206        result.sort()
207        expect = ['a', 'b']
208        self.assertEqual(result, expect)
209
210    def test_46(self):
211        names = ['a', 'aa', 'ab', 'b', 'bb', 'bc', 'bca']
212        result = reduce_names(names, 1)
213        result.sort()
214        expect = ['a']
215        self.assertEqual(result, expect)
216
217    def test_47(self):
218        names = ['a', 'aa', 'ab', 'b', 'bb', 'bc', 'bca']
219        result = reduce_names(names, 0)
220        result.sort()
221        expect = []
222        self.assertEqual(result, expect)
223
224    def test_50(self):
225        icon_dir = FUGUE_ICONS[False]['S'][1]
226        files = fnmatch.filter(os.listdir(icon_dir), '*.png')
227        names = [os.path.splitext(p)[0] for p in files]
228        names.sort()
229        expect = names
230        result = reduce_names(names, len(names))
231        result.sort()
232        self.assertEqual(result, expect)
233
234    def test_51(self):
235        icon_dir = FUGUE_ICONS[False]['S'][1]
236        files = fnmatch.filter(os.listdir(icon_dir), '*.png')
237        names = [os.path.splitext(p)[0] for p in files]
238        names.sort()
239        keep = 40
240        kept = 0
241        result = reduce_names(names, keep)
242        for name in names:
243            if name not in result:
244                # print('%s%s' % (' '*8, name))
245                pass
246            else:
247                # print(name)
248                kept += 1
249        # print('\nKept %d names' % kept)
250        self.assertEqual(kept, keep)
251
252    def test_90(self):
253        # Same as docstring
254        names = ['a', 'aa', 'aaa', 'b', 'bb']
255        result = reduce_names(names, 5)
256        result.sort()
257        expect = ['a', 'aa', 'aaa', 'b', 'bb']
258        self.assertEqual(result, expect)
259
260    def test_91(self):
261        # Same as docstring
262        names = ['a', 'aa', 'aaa', 'b', 'bb']
263        result = reduce_names(names, 4)
264        result.sort()
265        expect = ['a', 'aa', 'b', 'bb']
266        self.assertEqual(result, expect)
267
268    def test_92(self):
269        # Same as docstring
270        names = ['a', 'aa', 'aaa', 'b', 'bb']
271        result = reduce_names(names, 3)
272        result.sort()
273        expect = ['a', 'aa', 'b']
274        self.assertEqual(result, expect)
275
276    def test_93(self):
277        # Same as docstring
278        names = ['a', 'aa', 'aaa', 'b', 'bb']
279        result = reduce_names(names, 2)
280        result.sort()
281        expect = ['a', 'b']
282        self.assertEqual(result, expect)
283
284    def test_94(self):
285        # Same as docstring
286        names = ['a', 'aa', 'aaa', 'b', 'bb']
287        result = reduce_names(names, 1)
288        result.sort()
289        expect = ['a']
290        self.assertEqual(result, expect)
291
292    def test_95(self):
293        # Same as docstring
294        names = ['a', 'aa', 'aaa', 'b', 'bb']
295        result = reduce_names(names, 0)
296        result.sort()
297        expect = []
298        self.assertEqual(result, expect)
299
300
301def suite():
302    suite = unittest.TestSuite()
303    suite.addTest(unittest.makeSuite(GroupOverTestCase, 'test'))
304    suite.addTest(unittest.makeSuite(ReduceNamesTestCase, 'test'))
305    return suite
306
307if __name__ == '__main__':
308    unittest.main(defaultTest='suite')
Note: See TracBrowser for help on using the repository browser.