Saltware / Mbed 2 deprecated Water Play

Dependencies:   mbed DRV88255 TextLCD Ping mbed-rtos

Committer:
sbouber1
Date:
Fri Jun 17 19:10:15 2016 +0000
Revision:
55:ee80f248919d
Parent:
50:c1f682eb4c4e
Child:
58:b5f0c0f305ff
comments

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