Saltware / Mbed 2 deprecated Water Play

Dependencies:   mbed DRV88255 TextLCD Ping mbed-rtos

Committer:
sbouber1
Date:
Sun Jun 19 22:39:16 2016 +0000
Revision:
58:b5f0c0f305ff
Parent:
55:ee80f248919d
Child:
61:6b5c2ddcea0c
update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sbouber1 19:ee89eabe1fa2 1 #ifndef __TESTING_H__
sbouber1 19:ee89eabe1fa2 2 #define __TESTING_H__
sbouber1 19:ee89eabe1fa2 3
sbouber1 19:ee89eabe1fa2 4
sbouber1 55:ee80f248919d 5 #include "mbed.h"
sbouber1 58:b5f0c0f305ff 6 #include "settings.h"
sbouber1 55:ee80f248919d 7
sbouber1 55:ee80f248919d 8 class TestCase {
sbouber1 13:1323e2c0b697 9
sbouber1 55:ee80f248919d 10 public:
sbouber1 55:ee80f248919d 11 TestCase(const char *name, bool (*evaluate)(TestCase *tc)) {
sbouber1 55:ee80f248919d 12 this->name = name;
sbouber1 55:ee80f248919d 13 this->evaluate = evaluate;
sbouber1 55:ee80f248919d 14 this->failed = false;
sbouber1 55:ee80f248919d 15
sbouber1 55:ee80f248919d 16 if(!failed && this->evaluate(this)) {
sbouber1 55:ee80f248919d 17 printf("TESTCASE %s PASSED!\r\n", this->name);
sbouber1 55:ee80f248919d 18 } else {
sbouber1 55:ee80f248919d 19 printf("TESTCASE %s FAILED!\r\n", this->name);
sbouber1 55:ee80f248919d 20 }
sbouber1 55:ee80f248919d 21 }
sbouber1 55:ee80f248919d 22
sbouber1 55:ee80f248919d 23 void assert(bool b, const char *error);
sbouber1 55:ee80f248919d 24
sbouber1 55:ee80f248919d 25 bool failed;
sbouber1 55:ee80f248919d 26
sbouber1 55:ee80f248919d 27 private:
sbouber1 55:ee80f248919d 28 const char *name;
sbouber1 55:ee80f248919d 29 bool (*evaluate)(TestCase *tc);
sbouber1 55:ee80f248919d 30
sbouber1 55:ee80f248919d 31 };
sbouber1 55:ee80f248919d 32
sbouber1 19:ee89eabe1fa2 33
sbouber1 19:ee89eabe1fa2 34 #define MOCK(N, F) static inline float N(int i,int t) {return (F);}
sbouber1 19:ee89eabe1fa2 35
sbouber1 19:ee89eabe1fa2 36 #define DEF_MOCKS(A,B,C) MockSensorController temp(false,0,A); \
sbouber1 22:4b5bf1c2e1ff 37 MockSensorController salt(false,0,B); \
sbouber1 22:4b5bf1c2e1ff 38 MockSensorController prox(false,0,C);
sbouber1 19:ee89eabe1fa2 39
sbouber1 30:cf12566013a5 40 #define ALARM_TEST(N,T,S,P,TIME) bool N(TestCase *tc) { \
sbouber1 30:cf12566013a5 41 DEF_MOCKS(T,S,P); \
joran 43:0abb54448b75 42 AlarmController alarm(false,0,&temp,&salt,&prox); \
sbouber1 30:cf12566013a5 43 for(int i = 0; i < TIME; i++) { \
sbouber1 30:cf12566013a5 44 alarm.run(); \
sbouber1 30:cf12566013a5 45 Thread::wait(1000); \
sbouber1 30:cf12566013a5 46 } \
sbouber1 30:cf12566013a5 47 return alarm.is_error(); \
sbouber1 30:cf12566013a5 48 }
sbouber1 30:cf12566013a5 49
sbouber1 31:1c50d2d8c155 50 #define START_TESTS() int __num_failed=0; \
sbouber1 31:1c50d2d8c155 51 int __num_passed = 0; \
sbouber1 31:1c50d2d8c155 52 bool __pass = false;
sbouber1 31:1c50d2d8c155 53
sbouber1 31:1c50d2d8c155 54 #define TESTCASE(N,F) __pass = !TestCase(N,F).failed;\
sbouber1 31:1c50d2d8c155 55 if(__pass) __num_passed++; \
sbouber1 31:1c50d2d8c155 56 else __num_failed++;
sbouber1 31:1c50d2d8c155 57
sbouber1 31:1c50d2d8c155 58 #define END_TESTS() printf("====================================================\r\n"); \
sbouber1 31:1c50d2d8c155 59 printf("Ran a total of %d test cases\r\n", __num_passed + __num_failed); \
sbouber1 31:1c50d2d8c155 60 printf("Number of tests passed: %d\r\n", __num_passed); \
sbouber1 31:1c50d2d8c155 61 printf("Number of tests failed: %d\r\n", __num_failed); \
sbouber1 31:1c50d2d8c155 62 printf("====================================================\r\n");
sbouber1 31:1c50d2d8c155 63
sbouber1 19:ee89eabe1fa2 64
sbouber1 19:ee89eabe1fa2 65
sbouber1 13:1323e2c0b697 66 #endif