Browse Source

pheromones tests: direction and point readability

Bastien Sevajol 9 years ago
parent
commit
ca799c5ad1

+ 18 - 1
intelligine/synergy/event/move/direction.py View File

50
   27: (1, 1, 1),
50
   27: (1, 1, 1),
51
 }
51
 }
52
 
52
 
53
+NORTH = 11
54
+NORTH_EST = 12
55
+EST = 15
56
+SOUTH_EST = 18
57
+SOUTH = 17
58
+SOUTH_WEST = 16
59
+WEST = 13
60
+NORTH_WEST = 10
61
+
62
+CENTER = 14
63
+
53
 """
64
 """
54
 Directions identifiers 3D, central position is 14.
65
 Directions identifiers 3D, central position is 14.
55
 niv -1:  1   2  3
66
 niv -1:  1   2  3
134
     18: 10
145
     18: 10
135
 }
146
 }
136
 
147
 
148
+
137
 def get_direction_opposite(direction):
149
 def get_direction_opposite(direction):
138
-    return directions_opposites[direction]
150
+    return directions_opposites[direction]
151
+
152
+def get_position_with_direction_decal(direction=CENTER, point=(0, 0, 0)):
153
+    z, x, y = point
154
+    directions_modifier = directions_modifiers[direction]
155
+    return z + directions_modifier[0], x + directions_modifier[1], y + directions_modifier[2]

+ 67 - 64
intelligine/tests/simulation/pheromone/TestDirection.py View File

9
 from intelligine.simulation.pheromone.DirectionPheromone import DirectionPheromone
9
 from intelligine.simulation.pheromone.DirectionPheromone import DirectionPheromone
10
 from intelligine.core.Context import Context
10
 from intelligine.core.Context import Context
11
 from intelligine.cst import PHEROMON_DIRECTION, PHEROMON_DIR_EXPLO, PHEROMON_DIR_HOME
11
 from intelligine.cst import PHEROMON_DIRECTION, PHEROMON_DIR_EXPLO, PHEROMON_DIR_HOME
12
+from intelligine.synergy.event.move.direction import NORTH, NORTH_EST, EST, SOUTH_EST, SOUTH, SOUTH_WEST, WEST, \
13
+    NORTH_WEST, CENTER
14
+from intelligine.synergy.event.move.direction import get_position_with_direction_decal as _p
12
 
15
 
13
 
16
 
14
 class TestDirection(Base):
17
 class TestDirection(Base):
27
             self._context.pheromones().set_pheromones(position, pheromones[position])
30
             self._context.pheromones().set_pheromones(position, pheromones[position])
28
 
31
 
29
     def _test_direction_for_point(self, pheromones, direction, pheromone_type=PHEROMON_DIR_EXPLO,
32
     def _test_direction_for_point(self, pheromones, direction, pheromone_type=PHEROMON_DIR_EXPLO,
30
-                                  reference_point=(0, 0, 0)):
33
+                                  reference_point=_p(CENTER)):
31
         """
34
         """
32
 
35
 
33
         :param pheromones:
36
         :param pheromones:
41
         self.assertEqual(direction, direction_tested, "Direction must be %s" % direction)
44
         self.assertEqual(direction, direction_tested, "Direction must be %s" % direction)
42
 
45
 
43
     def _test_direction_for_points(self, pheromones, direction, pheromone_type=PHEROMON_DIR_EXPLO,
46
     def _test_direction_for_points(self, pheromones, direction, pheromone_type=PHEROMON_DIR_EXPLO,
44
-                                   reference_point=(0, 0, 0)):
47
+                                   reference_point=_p(CENTER)):
45
         """
48
         """
46
 
49
 
47
         :param pheromones:
50
         :param pheromones:
64
         :return:
67
         :return:
65
         """
68
         """
66
         test_data = {
69
         test_data = {
67
-            10: {
68
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
69
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
70
+            NORTH_WEST: {
71
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
72
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
70
             },
73
             },
71
-            11: {
72
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
73
-                (0, 0, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
74
+            NORTH: {
75
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
76
+                _p(NORTH): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
74
             },
77
             },
75
-            12: {
76
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
77
-                (0, 1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
78
+            NORTH_EST: {
79
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
80
+                _p(NORTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
78
             },
81
             },
79
-            13: {
80
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
81
-                (0, -1, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
82
+            WEST: {
83
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
84
+                _p(WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
82
             },
85
             },
83
-            15: {
84
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
85
-                (0, 1, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
86
+            EST: {
87
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
88
+                _p(EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
86
             },
89
             },
87
-            16: {
88
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
89
-                (0, -1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
90
+            SOUTH_WEST: {
91
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
92
+                _p(SOUTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
90
             },
93
             },
91
-            17: {
92
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
93
-                (0, 0, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
94
+            SOUTH: {
95
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
96
+                _p(SOUTH): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
94
             },
97
             },
95
-            18: {
96
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
97
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
98
+            SOUTH_EST: {
99
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
100
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}}
98
             }
101
             }
99
         }
102
         }
100
 
103
 
107
         :return:
110
         :return:
108
         """
111
         """
109
         test_data = {
112
         test_data = {
110
-            10: {
111
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
112
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}},
113
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (12, 1)}}
113
+            NORTH_WEST: {
114
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
115
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}},
116
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (12, 1)}}
114
             },
117
             },
115
-            10: {
116
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
117
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}},
118
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (12, 1)}},
119
-                (0, 0, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (12, 1)}}
118
+            NORTH_WEST: {
119
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
120
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}},
121
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (12, 1)}},
122
+                _p(SOUTH): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (12, 1)}}
120
             },
123
             },
121
-            10: {
122
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
123
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}},
124
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (12, 1)}},
125
-                (0, 0, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (8, 1)}}
124
+            NORTH_WEST: {
125
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 1)}},
126
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 1)}},
127
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (12, 1)}},
128
+                _p(SOUTH): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (8, 1)}}
126
             },
129
             },
127
         }
130
         }
128
 
131
 
135
         :return:
138
         :return:
136
         """
139
         """
137
         test_data = {
140
         test_data = {
138
-            10: {
139
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 2)}},
140
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 2)}},
141
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (8, 1)}}
141
+            NORTH_WEST: {
142
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 2)}},
143
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 2)}},
144
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (8, 1)}}
142
             },
145
             },
143
-            10: {
144
-                (0, 0, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 2)}},
145
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 2)}},
146
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (8, 1)}},
147
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (5, 10)}}  # an other pheromone type
146
+            NORTH_WEST: {
147
+                _p(CENTER): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (10, 2)}},
148
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 2)}},
149
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (8, 1)}},
150
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (5, 10)}}  # an other pheromone type
148
             }
151
             }
149
         }
152
         }
150
 
153
 
153
 
156
 
154
     def test_direction_direct(self):
157
     def test_direction_direct(self):
155
         test_data = {
158
         test_data = {
156
-            11: {
157
-                (0, 0, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 2)}}
159
+            NORTH: {
160
+                _p(NORTH): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 2)}}
158
             },
161
             },
159
-            11: {
160
-                (0, 0, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 2)}},
161
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (9, 500)}}  # An other pheromone type
162
+            NORTH: {
163
+                _p(NORTH): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 2)}},
164
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (9, 500)}}  # An other pheromone type
162
             }
165
             }
163
         }
166
         }
164
 
167
 
167
 
170
 
168
     def test_direction_with_multiple_intensity(self):
171
     def test_direction_with_multiple_intensity(self):
169
         test_data = {
172
         test_data = {
170
-            11: {
171
-                (0, 0, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 5)}},
172
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 4)}},
173
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 4)}}
173
+            NORTH: {
174
+                _p(NORTH): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 5)}},
175
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 4)}},
176
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 4)}}
174
             },
177
             },
175
-            11: {
176
-                (0, 0, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 5)}},
177
-                (0, -1, 0): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (9, 500)}},  # An other pheromone_type
178
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 4)}},
179
-                (0, -1, -1): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 4)}}
178
+            NORTH: {
179
+                _p(NORTH): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 5)}},
180
+                _p(WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (9, 500)}},  # An other pheromone_type
181
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 4)}},
182
+                _p(NORTH_WEST): {PHEROMON_DIRECTION: {PHEROMON_DIR_EXPLO: (9, 4)}}
180
             }
183
             }
181
         }
184
         }
182
 
185
 
193
         # Wrong pheromone type
196
         # Wrong pheromone type
194
         try:  # WTF ?
197
         try:  # WTF ?
195
             self.assertRaises(NoPheromone, self._test_direction_for_points({
198
             self.assertRaises(NoPheromone, self._test_direction_for_points({
196
-                (0, 1, 1): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (9, 5)}}
199
+                _p(SOUTH_EST): {PHEROMON_DIRECTION: {PHEROMON_DIR_HOME: (9, 5)}}
197
             }, -1))
200
             }, -1))
198
         except NoPheromone:
201
         except NoPheromone:
199
             self.assertTrue(True)
202
             self.assertTrue(True)