summaryrefslogtreecommitdiff
path: root/FreeRTOS-Plus/Test/CMock/examples/temp_sensor/test/TestTaskScheduler.c
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS-Plus/Test/CMock/examples/temp_sensor/test/TestTaskScheduler.c')
-rw-r--r--FreeRTOS-Plus/Test/CMock/examples/temp_sensor/test/TestTaskScheduler.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/FreeRTOS-Plus/Test/CMock/examples/temp_sensor/test/TestTaskScheduler.c b/FreeRTOS-Plus/Test/CMock/examples/temp_sensor/test/TestTaskScheduler.c
new file mode 100644
index 000000000..29d1edf1d
--- /dev/null
+++ b/FreeRTOS-Plus/Test/CMock/examples/temp_sensor/test/TestTaskScheduler.c
@@ -0,0 +1,104 @@
+#include "unity.h"
+#include "Types.h"
+#include "TaskScheduler.h"
+
+void setUp(void)
+{
+ TaskScheduler_Init();
+}
+
+void tearDown(void)
+{
+}
+
+void testShouldScheduleUsartTaskAfter1000ms(void)
+{
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoUsart());
+
+ TaskScheduler_Update(999);
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoUsart());
+
+ TaskScheduler_Update(1000);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoUsart());
+}
+
+void testShouldClearUsartDoFlagAfterReported(void)
+{
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoUsart());
+ TaskScheduler_Update(1000);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoUsart());
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoUsart());
+}
+
+void testShouldScheduleUsartTaskEvery1000ms(void)
+{
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoUsart());
+
+ TaskScheduler_Update(1300);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoUsart());
+
+ TaskScheduler_Update(2000);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoUsart());
+
+ TaskScheduler_Update(3100);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoUsart());
+}
+
+void testShouldScheduleUsartTaskOnlyOncePerPeriod(void)
+{
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoUsart());
+ TaskScheduler_Update(1000);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoUsart());
+ TaskScheduler_Update(1001);
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoUsart());
+ TaskScheduler_Update(1999);
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoUsart());
+ TaskScheduler_Update(2000);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoUsart());
+}
+
+void testShouldScheduleAdcTaskAfter100ms(void)
+{
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoAdc());
+
+ TaskScheduler_Update(99);
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoAdc());
+
+ TaskScheduler_Update(100);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoAdc());
+}
+
+void testShouldClearAdcDoFlagAfterReported(void)
+{
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoAdc());
+ TaskScheduler_Update(100);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoAdc());
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoAdc());
+}
+
+void testShouldScheduleAdcTaskEvery100ms(void)
+{
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoAdc());
+
+ TaskScheduler_Update(121);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoAdc());
+
+ TaskScheduler_Update(200);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoAdc());
+
+ TaskScheduler_Update(356);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoAdc());
+}
+
+void testShouldScheduleAdcTaskOnlyOncePerPeriod(void)
+{
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoAdc());
+ TaskScheduler_Update(100);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoAdc());
+ TaskScheduler_Update(101);
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoAdc());
+ TaskScheduler_Update(199);
+ TEST_ASSERT_EQUAL(FALSE, TaskScheduler_DoAdc());
+ TaskScheduler_Update(200);
+ TEST_ASSERT_EQUAL(TRUE, TaskScheduler_DoAdc());
+}