6 """ |
6 """ |
7 |
7 |
8 from logilab.common.testlib import TestCase, unittest_main |
8 from logilab.common.testlib import TestCase, unittest_main |
9 |
9 |
10 from cubicweb.vregistry import Selector, AndSelector, OrSelector |
10 from cubicweb.vregistry import Selector, AndSelector, OrSelector |
|
11 from cubicweb.selectors import implements |
|
12 |
|
13 from cubicweb.interfaces import IDownloadable |
11 |
14 |
12 class _1_(Selector): |
15 class _1_(Selector): |
13 def __call__(self, *args, **kwargs): |
16 def __call__(self, *args, **kwargs): |
14 return 1 |
17 return 1 |
15 |
18 |
72 selector = (_1_() & _0_()) | (_1_() & _1_()) |
75 selector = (_1_() & _0_()) | (_1_() & _1_()) |
73 self.failUnless(isinstance(selector, OrSelector)) |
76 self.failUnless(isinstance(selector, OrSelector)) |
74 self.assertEquals(len(selector.selectors), 2) |
77 self.assertEquals(len(selector.selectors), 2) |
75 self.assertEquals(selector(None), 2) |
78 self.assertEquals(selector(None), 2) |
76 |
79 |
|
80 def test_search_selectors(self): |
|
81 sel = implements('something') |
|
82 self.assertIs(sel.search_selector(implements), sel) |
|
83 csel = AndSelector(sel, Selector()) |
|
84 self.assertIs(csel.search_selector(implements), sel) |
|
85 csel = AndSelector(Selector(), sel) |
|
86 self.assertIs(csel.search_selector(implements), sel) |
|
87 |
|
88 from cubicweb.devtools.testlib import EnvBasedTC |
77 |
89 |
|
90 class ImplementsSelectorTC(EnvBasedTC): |
|
91 def test_etype_priority(self): |
|
92 req = self.request() |
|
93 cls = self.vreg.etype_class('File') |
|
94 anyscore = implements('Any').score_class(cls, req) |
|
95 idownscore = implements(IDownloadable).score_class(cls, req) |
|
96 self.failUnless(idownscore > anyscore, (idownscore, anyscore)) |
|
97 filescore = implements('File').score_class(cls, req) |
|
98 self.failUnless(filescore > idownscore, (filescore, idownscore)) |
|
99 |
78 if __name__ == '__main__': |
100 if __name__ == '__main__': |
79 unittest_main() |
101 unittest_main() |
80 |
102 |