@@ -15,14 +15,6 @@ struct positionLog {
15
15
16
16
positionLog lastPositions[16 ];
17
17
18
- struct modeLog {
19
- byte prevMode;
20
- byte newMode;
21
- };
22
-
23
- byte modeIndex = 0 ;
24
- modeLog lastModes[10 ];
25
-
26
18
void setUp (void ) {
27
19
for (int id = 0 ; id < 16 ; id++) {
28
20
lastPositions[id].index = 0 ;
@@ -31,13 +23,6 @@ void setUp(void) {
31
23
lastPositions[id].positions [i] = 0 ;
32
24
}
33
25
}
34
-
35
- for (int i = 0 ; i < 10 ; i++) {
36
- lastModes[i].prevMode = 0 ;
37
- lastModes[i].newMode = 0 ;
38
- }
39
-
40
- modeIndex = 0 ;
41
26
}
42
27
43
28
void move (byte servoID, int position) {
@@ -46,12 +31,6 @@ void move(byte servoID, int position) {
46
31
lastPositions[servoID].index ++;
47
32
}
48
33
49
- void onModeChange (byte prevMode, byte newMode) {
50
- lastModes[modeIndex].prevMode = prevMode;
51
- lastModes[modeIndex].newMode = newMode;
52
- modeIndex++;
53
- }
54
-
55
34
const int positionsA[5 ] PROGMEM = {350 , 340 , 330 , 340 , 330 };
56
35
const int positionsB[5 ] PROGMEM = {250 , 240 , 230 , 240 , 230 };
57
36
@@ -67,48 +46,56 @@ void test_play(void) {
67
46
animation.play ();
68
47
TEST_ASSERT_EQUAL (Animation::MODE_PLAY, animation.getMode ());
69
48
70
- int expA[9 ] = {340 , 330 , 340 , 330 , 350 , 340 , 330 , 340 , 330 };
71
- int expB[9 ] = {240 , 230 , 240 , 230 , 250 , 240 , 230 , 240 , 230 };
49
+ int expA[5 ] = {340 , 330 , 340 , 330 , 350 };
50
+ int expB[5 ] = {240 , 230 , 240 , 230 , 250 };
72
51
73
52
for (long i = 0 ; i < FRAME_MICROS * (long )9 ; i++) {
74
53
animation.run (i);
75
54
}
76
55
77
- for (int i = 0 ; i < 9 ; i++) {
56
+ for (int i = 0 ; i < 5 ; i++) {
78
57
TEST_ASSERT_EQUAL (expA[i], lastPositions[1 ].positions [i]);
79
58
TEST_ASSERT_EQUAL (expB[i], lastPositions[2 ].positions [i]);
80
59
TEST_ASSERT_EQUAL (0 , lastPositions[3 ].positions [i]);
81
60
}
61
+
62
+ for (int i = 5 ; i < 9 ; i++) {
63
+ TEST_ASSERT_EQUAL (0 , lastPositions[1 ].positions [i]);
64
+ TEST_ASSERT_EQUAL (0 , lastPositions[2 ].positions [i]);
65
+ TEST_ASSERT_EQUAL (0 , lastPositions[3 ].positions [i]);
66
+ }
67
+
68
+ TEST_ASSERT_EQUAL (Animation::MODE_DEFAULT, animation.getMode ());
82
69
}
83
70
84
- void test_pause (void ) {
71
+ void test_pause_play (void ) {
85
72
Animation animation (FPS, FRAMES);
86
73
Servo servo (2 , positionsA, move);
87
74
animation.addServo (servo);
88
75
animation.play ();
89
76
TEST_ASSERT_EQUAL (Animation::MODE_PLAY, animation.getMode ());
90
77
91
- int exp[9 ] = {340 , 330 , 340 , 330 , 350 , 340 , 330 , 340 , 330 };
78
+ int exp[5 ] = {340 , 330 , 340 , 330 , 350 };
92
79
93
- for (int i = 0 ; i < 4 ; i++) {
80
+ for (int i = 0 ; i < 2 ; i++) {
94
81
animation.run (FRAME_MICROS * (long )(i + 1 ));
95
82
TEST_ASSERT_EQUAL (exp[i], lastPositions[2 ].positions [i]);
96
83
}
97
84
98
85
animation.pause ();
99
86
TEST_ASSERT_EQUAL (Animation::MODE_PAUSE, animation.getMode ());
100
87
101
- for (int i = 4 ; i < 8 ; i++) {
88
+ for (int i = 2 ; i < 5 ; i++) {
102
89
animation.run (FRAME_MICROS * (long )(i + 1 ));
103
90
TEST_ASSERT_EQUAL (0 , lastPositions[2 ].positions [i]);
104
91
}
105
92
106
93
animation.play ();
107
94
TEST_ASSERT_EQUAL (Animation::MODE_PLAY, animation.getMode ());
108
95
109
- for (int i = 8 ; i < 14 ; i++) {
96
+ for (int i = 5 ; i < 8 ; i++) {
110
97
animation.run (FRAME_MICROS * (long )(i + 1 ));
111
- TEST_ASSERT_EQUAL (exp[i - 5 ], lastPositions[2 ].positions [i - 5 ]);
98
+ TEST_ASSERT_EQUAL (exp[i - 3 ], lastPositions[2 ].positions [i - 3 ]);
112
99
}
113
100
}
114
101
@@ -143,68 +130,71 @@ void test_stop(void) {
143
130
TEST_ASSERT_EQUAL (0 , animation.getFrame ());
144
131
}
145
132
146
- void test_live (void ) {
147
- Animation animation;
148
- SerialMock mock;
133
+ void test_loop (void ) {
134
+ Animation animation (FPS, FRAMES);
149
135
Servo servos[] = {
150
- Servo (0 , positionsA, move),
151
- Servo (1 , move),
136
+ Servo (1 , positionsA, move),
137
+ Servo (2 , positionsB, move),
138
+ Servo (3 , move),
152
139
};
153
- animation.addServos (servos, 2 );
154
- animation.live (mock);
155
- TEST_ASSERT_EQUAL (Animation::MODE_LIVE, animation.getMode ());
140
+ animation.addServos (servos, 3 );
141
+ TEST_ASSERT_EQUAL (Animation::MODE_DEFAULT, animation.getMode ());
142
+ animation.loop ();
143
+ TEST_ASSERT_EQUAL (Animation::MODE_LOOP, animation.getMode ());
156
144
157
- byte values[ 20 ] = {60 , 0 , 1 , 94 , 62 , 60 , 1 , 1 , 94 , 62 ,
158
- 60 , 0 , 1 , 99 , 62 , 60 , 1 , 1 , 99 , 62 };
145
+ int expA[ 9 ] = {340 , 330 , 340 , 330 , 350 , 340 , 330 , 340 , 330 };
146
+ int expB[ 9 ] = { 240 , 230 , 240 , 230 , 250 , 240 , 230 , 240 , 230 };
159
147
160
- for (int i = 0 ; i < 10 ; i++) {
161
- mock. write (values[i] );
148
+ for (long i = 0 ; i < FRAME_MICROS * ( long ) 9 ; i++) {
149
+ animation. run (i );
162
150
}
163
151
164
- animation.run ();
165
-
166
- TEST_ASSERT_EQUAL (0 , lastPositions[0 ].positions [0 ]);
167
- TEST_ASSERT_EQUAL (350 , lastPositions[1 ].positions [0 ]);
168
-
169
- for (int i = 10 ; i < 20 ; i++) {
170
- mock.write (values[i]);
152
+ for (int i = 0 ; i < 9 ; i++) {
153
+ TEST_ASSERT_EQUAL (expA[i], lastPositions[1 ].positions [i]);
154
+ TEST_ASSERT_EQUAL (expB[i], lastPositions[2 ].positions [i]);
155
+ TEST_ASSERT_EQUAL (0 , lastPositions[3 ].positions [i]);
171
156
}
172
157
173
- animation.run ();
174
-
175
- TEST_ASSERT_EQUAL (355 , lastPositions[0 ].positions [0 ]);
176
- TEST_ASSERT_EQUAL (355 , lastPositions[1 ].positions [1 ]);
158
+ TEST_ASSERT_EQUAL (Animation::MODE_LOOP, animation.getMode ());
177
159
}
178
160
179
- void test_mode_change (void ) {
180
- SerialMock mock;
161
+ void test_pause_loop (void ) {
181
162
Animation animation (FPS, FRAMES);
163
+ Servo servo (2 , positionsA, move);
164
+ animation.addServo (servo);
165
+ animation.loop ();
166
+ TEST_ASSERT_EQUAL (Animation::MODE_LOOP, animation.getMode ());
182
167
183
- animation.onModeChange (onModeChange);
168
+ int exp[9 ] = {340 , 330 , 340 , 330 , 350 , 340 , 330 , 340 , 330 };
169
+
170
+ for (int i = 0 ; i < 4 ; i++) {
171
+ animation.run (FRAME_MICROS * (long )(i + 1 ));
172
+ TEST_ASSERT_EQUAL (exp[i], lastPositions[2 ].positions [i]);
173
+ }
184
174
185
- animation.play ();
186
- TEST_ASSERT_EQUAL (Animation::MODE_DEFAULT, lastModes[0 ].prevMode );
187
- TEST_ASSERT_EQUAL (Animation::MODE_PLAY, lastModes[0 ].newMode );
188
175
animation.pause ();
189
- TEST_ASSERT_EQUAL (Animation::MODE_PLAY, lastModes[1 ].prevMode );
190
- TEST_ASSERT_EQUAL (Animation::MODE_PAUSE, lastModes[1 ].newMode );
191
- animation.stop ();
192
- TEST_ASSERT_EQUAL (Animation::MODE_PAUSE, lastModes[2 ].prevMode );
193
- TEST_ASSERT_EQUAL (Animation::MODE_STOP, lastModes[2 ].newMode );
194
- animation.run ();
195
- TEST_ASSERT_EQUAL (Animation::MODE_STOP, lastModes[3 ].prevMode );
196
- TEST_ASSERT_EQUAL (Animation::MODE_DEFAULT, lastModes[3 ].newMode );
197
- animation.live (mock);
198
- TEST_ASSERT_EQUAL (Animation::MODE_DEFAULT, lastModes[4 ].prevMode );
199
- TEST_ASSERT_EQUAL (Animation::MODE_LIVE, lastModes[4 ].newMode );
176
+ TEST_ASSERT_EQUAL (Animation::MODE_PAUSE, animation.getMode ());
177
+
178
+ for (int i = 4 ; i < 8 ; i++) {
179
+ animation.run (FRAME_MICROS * (long )(i + 1 ));
180
+ TEST_ASSERT_EQUAL (0 , lastPositions[2 ].positions [i]);
181
+ }
182
+
183
+ animation.loop ();
184
+ TEST_ASSERT_EQUAL (Animation::MODE_LOOP, animation.getMode ());
185
+
186
+ for (int i = 8 ; i < 14 ; i++) {
187
+ animation.run (FRAME_MICROS * (long )(i + 1 ));
188
+ TEST_ASSERT_EQUAL (exp[i - 5 ], lastPositions[2 ].positions [i - 5 ]);
189
+ }
200
190
}
201
191
202
192
int main (int argc, char **argv) {
203
193
UNITY_BEGIN ();
204
194
RUN_TEST (test_play);
205
- RUN_TEST (test_pause );
195
+ RUN_TEST (test_pause_play );
206
196
RUN_TEST (test_stop);
207
- RUN_TEST (test_live );
208
- RUN_TEST (test_mode_change );
197
+ RUN_TEST (test_loop );
198
+ RUN_TEST (test_pause_loop );
209
199
UNITY_END ();
210
200
}
0 commit comments