示例#1
0
 def test_ExpressionEvaluator(self):
   ki= self.ki; obj2= self.obj2
   ee= ExpressionEvaluator(); ee.id= 'ee'
   ki._setObject(ee.id,ee); ee= ki._getOb(ee.id)
   ee.manage_changeProperties(Expression= 'python: (3,4,)')
   self.assertEqual(ki._evaluate(obj2).keys(),OOSet((1,2,3,4)).keys())
   # ignore
   ee.manage_changeProperties(IgnorePredicate= 'python: 3 in value')
   self.assertEqual(ki._evaluate(obj2).keys(),OOSet((1,2,)).keys())
   # ignore - call it
   ee.manage_changeProperties(IgnorePredicate= 'python: lambda v: 3 in v')
   # normalize
   ee.manage_changeProperties(Expression= 'python: (4,)')
   ee.manage_changeProperties(Normalizer= 'python: (0,) + value')
   self.assertEqual(ki._evaluate(obj2).keys(),OOSet((0,1,2,4,)).keys())
   # normalize - call it
   ee.manage_changeProperties(Normalizer= 'python: lambda v: (0,) + v')
   self.assertEqual(ki._evaluate(obj2).keys(),OOSet((0,1,2,4,)).keys())
   # method
   ee.manage_changeProperties(Expression= "python: lambda object: object.kw")
   self.assertEqual(ki._evaluate(obj2).keys(),OOSet((0,1,2,)).keys())
   ## combine
   # 'union' - already tested
   # 'useFirst'
   ki.CombineType= 'useFirst'
   self.assertEqual(ki._evaluate(obj2).keys(),OOSet((1,2,)).keys())