Skip to content

Commit c9dfb85

Browse files
Add tests for trims
1 parent 6b7f85e commit c9dfb85

3 files changed

Lines changed: 161 additions & 2 deletions

File tree

src/buttons.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,4 +166,7 @@ void exec_callbacks(u32 buttons, enum ButtonFlags flags) {
166166
ptr = ptr->next;
167167
}
168168

169-
}
169+
}
170+
171+
#define TESTNAME buttons
172+
#include <tests.h>

src/tests/test_buttons.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
//Accessor to reset static variable
3+
u8 TEST_Button_InterruptLongPress()
4+
{
5+
u8 old = interrupt_longpress;
6+
interrupt_longpress = 0;
7+
return old;
8+
}

src/tests/test_mixer.c

Lines changed: 149 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "CuTest.h"
22

33
extern struct Transmitter Transmitter;
4-
4+
extern u8 TEST_Button_InterruptLongPress();
55

66
void TestMixerMapChannel(CuTest *t)
77
{
@@ -115,6 +115,14 @@ void TestApplyMixerSimple(CuTest *t)
115115
MIXER_ApplyMixer(&mixer, rawdata, origvalue);
116116
CuAssertIntEquals(t, 998, rawdata[3 + NUM_INPUTS]);
117117

118+
//Delay (with 0 delay)
119+
mixer = initmixer;
120+
mixer.flags = MUX_DELAY;
121+
rawdata[3 + NUM_INPUTS] = -1;
122+
rawdata[1] = 0;
123+
MIXER_ApplyMixer(&mixer, rawdata, origvalue);
124+
CuAssertIntEquals(t, -1, rawdata[3 + NUM_INPUTS]);
125+
118126
//Max overflow test
119127
mixer = initmixer;
120128
rawdata[1] = INT16_MAX * 2;
@@ -180,3 +188,143 @@ void TestApplyMixerTrim(CuTest *t)
180188
MIXER_ApplyMixer(&mixer, rawdata, NULL);
181189
CuAssertIntEquals(t, 1499, rawdata[3 + NUM_INPUTS]);
182190
}
191+
192+
void TestGetTrim(CuTest *t)
193+
{
194+
memset(&Model, 0, sizeof(Model));
195+
Model.trims[0].value[0] = 10;
196+
for(int i = 0; i < 100; i++) {
197+
Model.trims[0].step = i;
198+
CuAssertIntEquals(t, 100 * i, MIXER_GetTrimValue(0));
199+
}
200+
for(int i = 100; i <= 190; i++) {
201+
Model.trims[0].step = i;
202+
CuAssertIntEquals(t, 1000 * (i- 90), MIXER_GetTrimValue(0));
203+
}
204+
}
205+
206+
void TestUpdateTrim(CuTest *t)
207+
{
208+
int neg = 4;
209+
int pos = 5;
210+
memset(&Model, 0, sizeof(Model));
211+
Model.trims[0].neg = neg;
212+
Model.trims[0].pos = pos;
213+
Model.trims[0].step = 1;
214+
215+
//Button Up
216+
Model.trims[0].value[0] = 1;
217+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), 0, NULL);
218+
CuAssertIntEquals(t, 2, Model.trims[0].value[0]);
219+
220+
//Button Down
221+
Model.trims[0].value[0] = 0;
222+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), 0, NULL);
223+
CuAssertIntEquals(t, -1, Model.trims[0].value[0]);
224+
225+
//Button Long Up
226+
Model.trims[0].value[0] = 1;
227+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_LONGPRESS, NULL);
228+
CuAssertIntEquals(t, 10, Model.trims[0].value[0]);
229+
CuAssertIntEquals(t, 0, TEST_Button_InterruptLongPress());
230+
231+
//Button Long Down
232+
Model.trims[0].value[0] = 0;
233+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_LONGPRESS, NULL);
234+
CuAssertIntEquals(t, -9, Model.trims[0].value[0]);
235+
CuAssertIntEquals(t, 0, TEST_Button_InterruptLongPress());
236+
237+
//Long crossing zero down
238+
Model.trims[0].value[0] = 5;
239+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_LONGPRESS, NULL);
240+
CuAssertIntEquals(t, 0, Model.trims[0].value[0]);
241+
CuAssertIntEquals(t, 1, TEST_Button_InterruptLongPress());
242+
243+
//Long crossing zero up
244+
Model.trims[0].value[0] = -5;
245+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_LONGPRESS, NULL);
246+
CuAssertIntEquals(t, 0, Model.trims[0].value[0]);
247+
CuAssertIntEquals(t, 1, TEST_Button_InterruptLongPress());
248+
249+
//Button max up
250+
Model.trims[0].value[0] = 99;
251+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_LONGPRESS, NULL);
252+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
253+
CuAssertIntEquals(t, 1, TEST_Button_InterruptLongPress());
254+
255+
//Button max down
256+
Model.trims[0].value[0] = -99;
257+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_LONGPRESS, NULL);
258+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
259+
CuAssertIntEquals(t, 1, TEST_Button_InterruptLongPress());
260+
}
261+
262+
void TestTrimAsSwitch(CuTest *t)
263+
{
264+
int neg = 4;
265+
int pos = 5;
266+
memset(&Model, 0, sizeof(Model));
267+
Model.trims[0].neg = neg;
268+
Model.trims[0].pos = pos;
269+
270+
//ON/OFF
271+
Model.trims[0].step = TRIM_ONOFF;
272+
//Button Up
273+
Model.trims[0].value[0] = 0;
274+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_PRESS, NULL);
275+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
276+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_RELEASE, NULL);
277+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
278+
279+
//Button Down
280+
Model.trims[0].value[0] = 0;
281+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_PRESS, NULL);
282+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
283+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_RELEASE, NULL);
284+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
285+
286+
287+
//TOGGLE
288+
Model.trims[0].step = TRIM_TOGGLE;
289+
Model.trims[0].value[0] = 0;
290+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_PRESS, NULL);
291+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
292+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_RELEASE, NULL);
293+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
294+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_PRESS, NULL);
295+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
296+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_RELEASE, NULL);
297+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
298+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_PRESS, NULL);
299+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
300+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_RELEASE, NULL);
301+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
302+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_PRESS, NULL);
303+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
304+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_RELEASE, NULL);
305+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
306+
307+
//Momentary
308+
Model.trims[0].step = TRIM_MOMENTARY;
309+
Model.trims[0].value[0] = 0;
310+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_PRESS, NULL);
311+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
312+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_RELEASE, NULL);
313+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
314+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_PRESS, NULL);
315+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
316+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_RELEASE, NULL);
317+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
318+
319+
//3Pos
320+
Model.trims[0].step = TRIM_3POS;
321+
Model.trims[0].value[0] = 0;
322+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_PRESS, NULL);
323+
CuAssertIntEquals(t, 100, Model.trims[0].value[0]);
324+
MIXER_UpdateTrim(CHAN_ButtonMask(pos), BUTTON_RELEASE, NULL);
325+
CuAssertIntEquals(t, 0, Model.trims[0].value[0]);
326+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_PRESS, NULL);
327+
CuAssertIntEquals(t, -100, Model.trims[0].value[0]);
328+
MIXER_UpdateTrim(CHAN_ButtonMask(neg), BUTTON_RELEASE, NULL);
329+
CuAssertIntEquals(t, 0, Model.trims[0].value[0]);
330+
}

0 commit comments

Comments
 (0)