1 import unittest
2 import util.BehaviorQuerySystem as bqs
3 from behaviors.ColorChangerBehavior import *
4 import util.Geo as geo
16
19
21 validQuery = lambda args:args['Color']==(255,0,0)
22 invalidQuery = lambda args:args['Color']==(254,0,0)
23 assert bqs.query(validQuery) == [{'Color':(255,0,0), 'Location':(3,4)}]
24 assert bqs.query(invalidQuery) == []
25
27 validDist = lambda args:geo.dist(args['Location'], (0,0)) <= 5
28 invalidDist = lambda args:geo.dist(args['Location'], (0,0)) <= 2
29 doubleDist = lambda args:geo.dist(args['Location'], (0,0)) <= 20
30
31 assert bqs.query(validDist) == [{'Color':(255,0,0), 'Location':(3,4)}]
32 assert bqs.query(invalidDist) == []
33 assert bqs.query(doubleDist) == [{'Color':(255,0,0), 'Location':(3,4)}, {'Color':(0,0,255),\
34 'Location':(5,12)}]
36 validQuery = lambda args:args['Color']==(255,0,0)
37 doubleDist = lambda args:geo.dist(args['Location'], (0,0)) <= 20
38
39 twoPartPredicate = lambda args:doubleDist(args) and validQuery(args)
40 assert bqs.query(twoPartPredicate) == [{'Color':(255,0,0), 'Location':(3,4)}]
41 assert bqs.query([validQuery, doubleDist]) == [{'Color':(255,0,0), 'Location':(3,4)}]
42