Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1082fea

Browse files
committed
Unittest for Sine and AM wave dump function
1 parent fa543df commit 1082fea

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

src/unittests/feature_test.c

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,79 @@ YT_TEST (triangle, triangle_test_normal)
260260
YT_END();
261261
}
262262

263+
YT_TEST (am, am_wave_normal)
264+
{
265+
unsigned int iter_num = 1;
266+
mode_is_dirty_fake.resources = &iter_num;
267+
mode_is_dirty_fake.handler = mode_is_dirty_after_some_iterations_handler;
268+
269+
YT_MUST_CALL_IN_ORDER (HAL_IO_MAKE_OUTPUT, YT_V (ANALOG_OUTPUT_GPIO),
270+
YT_V (ANALOG_OUTPUT_PIN_MASK));
271+
272+
// Following traces the general sine wave pattern expecting the followings
273+
274+
// 1. Starting with half way value
275+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE, YT_V (ANALOG_OUTPUT_GPIO),
276+
YT_V (DAC_WIDTH_MAX_VALUE / 2));
277+
278+
// As AM wave slowly increases in amplitde we expect more than 10 carrier waves reaching rail to
279+
// rail values.
280+
YT_IN_SEQUENCE (10)
281+
{
282+
// 2. Then it must reach the maximum value
283+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE, YT_V (ANALOG_OUTPUT_GPIO),
284+
YT_V (DAC_WIDTH_MAX_VALUE - 1));
285+
286+
// 3. Then it must reach the zero
287+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE, YT_V (ANALOG_OUTPUT_GPIO), YT_V (0));
288+
}
289+
290+
// 4. End it end with again around half way
291+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE, YT_V (ANALOG_OUTPUT_GPIO),
292+
YT_V ((DAC_WIDTH_MAX_VALUE / 2) - 1));
293+
294+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_LOW, YT_V (ANALOG_OUTPUT_GPIO),
295+
YT_V (ANALOG_OUTPUT_PIN_MASK));
296+
297+
am_test();
298+
YT_END();
299+
}
300+
301+
// TODO: In order to write a test to check if only one cycle of the wave is outputed and not more,
302+
// requires YT_MUST_CALL_IN_ORDER_EXACT_TIMES, which does not exist yet.
303+
304+
YT_TEST (sine, sine_wave_normal)
305+
{
306+
unsigned int iter_num = 1;
307+
mode_is_dirty_fake.resources = &iter_num;
308+
mode_is_dirty_fake.handler = mode_is_dirty_after_some_iterations_handler;
309+
310+
YT_MUST_CALL_IN_ORDER (HAL_IO_MAKE_OUTPUT, YT_V (ANALOG_OUTPUT_GPIO),
311+
YT_V (ANALOG_OUTPUT_PIN_MASK));
312+
313+
// Following traces the general sine wave pattern expecting the followings
314+
// 1. Starting with half way value
315+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE, YT_V (ANALOG_OUTPUT_GPIO),
316+
YT_V (DAC_WIDTH_MAX_VALUE / 2));
317+
318+
// 2. Then it must reach the maximum value
319+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE, YT_V (ANALOG_OUTPUT_GPIO),
320+
YT_V (DAC_WIDTH_MAX_VALUE - 1));
321+
322+
// 3. Then it must reach the zero
323+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE, YT_V (ANALOG_OUTPUT_GPIO), YT_V (0));
324+
325+
// 4. Then again it reaches around half way
326+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE, YT_V (ANALOG_OUTPUT_GPIO),
327+
YT_V ((DAC_WIDTH_MAX_VALUE / 2) - 1));
328+
329+
YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_LOW, YT_V (ANALOG_OUTPUT_GPIO),
330+
YT_V (ANALOG_OUTPUT_PIN_MASK));
331+
332+
sine_test();
333+
YT_END();
334+
}
335+
263336
void yt_reset()
264337
{
265338
reset_hal_mocks();
@@ -276,5 +349,7 @@ int main (void)
276349
two_pulse_test_normal();
277350
sawtooth_test_normal();
278351
triangle_test_normal();
352+
sine_wave_normal();
353+
am_wave_normal();
279354
YT_RETURN_WITH_REPORT();
280355
}

0 commit comments

Comments
 (0)