test/unittest_selectors.py
branchtls-sprint
changeset 779 8510e14335e1
parent 630 66ff0b2f7d03
child 1473 717dea3362c0
equal deleted inserted replaced
778:847db4c91061 779:8510e14335e1
     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