Saltware / Mbed 2 deprecated Water Play

Dependencies:   mbed DRV88255 TextLCD Ping mbed-rtos

Committer:
joran
Date:
Fri Jun 17 08:23:04 2016 +0000
Revision:
49:ca6fb19fc280
Parent:
47:a73b8640fb60
Child:
50:c1f682eb4c4e
Added code to start heating when < 32C, stop heating when >= 33C to compensate for measurement fluctuations. Also, the heater is broken.

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