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,6 +50,17 @@ directions_modifiers = {
50 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 65
 Directions identifiers 3D, central position is 14.
55 66
 niv -1:  1   2  3
@@ -134,5 +145,11 @@ directions_opposites = {
134 145
     18: 10
135 146
 }
136 147
 
148
+
137 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,6 +9,9 @@ from intelligine.tests.simulation.pheromone.Base import Base
9 9
 from intelligine.simulation.pheromone.DirectionPheromone import DirectionPheromone
10 10
 from intelligine.core.Context import Context
11 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 17
 class TestDirection(Base):
@@ -27,7 +30,7 @@ class TestDirection(Base):
27 30
             self._context.pheromones().set_pheromones(position, pheromones[position])
28 31
 
29 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 36
         :param pheromones:
@@ -41,7 +44,7 @@ class TestDirection(Base):
41 44
         self.assertEqual(direction, direction_tested, "Direction must be %s" % direction)
42 45
 
43 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 50
         :param pheromones:
@@ -64,37 +67,37 @@ class TestDirection(Base):
64 67
         :return:
65 68
         """
66 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,22 +110,22 @@ class TestDirection(Base):
107 110
         :return:
108 111
         """
109 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,16 +138,16 @@ class TestDirection(Base):
135 138
         :return:
136 139
         """
137 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,12 +156,12 @@ class TestDirection(Base):
153 156
 
154 157
     def test_direction_direct(self):
155 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,16 +170,16 @@ class TestDirection(Base):
167 170
 
168 171
     def test_direction_with_multiple_intensity(self):
169 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,7 +196,7 @@ class TestDirection(Base):
193 196
         # Wrong pheromone type
194 197
         try:  # WTF ?
195 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 200
             }, -1))
198 201
         except NoPheromone:
199 202
             self.assertTrue(True)