1 from teamwork.action.PsychActions import *
2 from teamwork.action.DecisionSpace import *
3 import unittest
4
7 self.typeList = ['hold','inspect','pass']
8
10 shippers = ['shipperA','shipperB']
11 subSpace = DecisionSpace('type',
12 map(lambda x:DecisionSpace('type',[x],
13 branchType='literal'),
14 self.typeList),
15 branchType='XOR',
16 )
17 actionList = subSpace.getOptions()
18 self.assertEqual(len(actionList),len(self.typeList))
19 for value in self.typeList:
20 self.assert_([Action({'type':value})] in actionList)
21
22 space = DecisionSpace('object',map(lambda x:DecisionSpace('object',[x],
23 branchType='literal'),shippers),subSpace,'AND')
24 actionList = space.getOptions(True)
25 self.assertEqual(len(actionList),pow(len(self.typeList),len(shippers)))
26
37
39 self.typeList = ['hold','inspect','pass']
40 values = map(lambda x:{'type':'literal','value':x},self.typeList)
41 parsedSpace = extractSpace({'type':'AND',
42 'key':'object',
43 'values':[{'type':'generic',
44 'value':'Shipper'}],
45 'base':{'type':'XOR',
46 'key':'type',
47 'values':values}})
48 self.verifySpace(parsedSpace)
49 doc = parsedSpace.__xml__()
50 space = parseSpace(doc.documentElement)
51 self.verifySpace(space)
52
54 space = DecisionSpace()
55 space.directAdd([Action({'actor':'Allies',
56 'type':'DenyUseAction',
57 'object':'Iraq'})])
58 spec = {'type':'OR',
59 'values':[{'type':'decision',
60 'value':{'type':'XOR',
61 'key':'object',
62 'values':[{'type':'generic','value':'US'}],
63 'base': {'type':'XOR',
64 'key':'type',
65 'values':[{'type':'literal','value':'requestgiveMoneyTo'},
66 {'type':'literal','value':'offernotax'},
67 {'type':'literal','value':'reject'},
68 {'type':'literal','value':'accept'}],
69 },
70 },
71 },
72 {'type':'decision',
73 'value':{'type':'AND',
74 'key':'object',
75 'values':[{'type':'relationship','value':'ownMarket'}],
76 'base':{'type':'XOR',
77 'key':'type',
78 'values':[{'type':'literal','value':'tax'},
79 {'type':'literal','value':'notax'}],
80 },
81 },
82 },
83 ],
84 }
85 space = extractSpace(spec)
86 self.assertEqual(len(space.getOptions()),6)
87
89 space = extractSpace({'type':'OR',
90 'values':[{'type':'decision',
91 'value':{'type':'XOR',
92 'key':'object',
93 'values':[{'type':'generic','value':'US'}],
94 'base': {'type':'XOR',
95 'key':'type',
96 'values':[{'type':'literal','value':'requestgiveMoneyTo'},
97 {'type':'literal','value':'offernotax'},
98 {'type':'literal','value':'reject'},
99 {'type':'literal','value':'accept'}],
100 },
101 },
102 },
103 {'type':'decision',
104 'value':{'type':'AND',
105 'key':'object',
106 'values':[{'type':'relationship','value':'ownMarket'}],
107 'base':{'type':'XOR',
108 'key':'type',
109 'values':[{'type':'literal','value':'tax'},
110 {'type':'literal','value':'notax'}],
111 },
112 },
113 },
114 ],
115 })
116 count = len(space.getOptions())
117 doc = space.__xml__()
118 space = parseSpace(doc.documentElement)
119 self.assertEqual(len(space.getOptions()),count)
120
122 space = extractSpace({'type':'XOR',
123 'key':'type',
124 'values':[{'type':'literal','value':'openRight'},
125 {'type':'literal','value':'openLeft'},
126 {'type':'literal','value':'listen'},
127 ],
128 })
129 self.assertEqual(len(space.getOptions()),3)
130
131 if __name__ == '__main__':
132 unittest.main()
133