Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed DRV88255 TextLCD Ping mbed-rtos
testing.cpp@23:46cc7d776988, 2016-06-13 (annotated)
- Committer:
- sbouber1
- Date:
- Mon Jun 13 13:47:33 2016 +0000
- Revision:
- 23:46cc7d776988
- Parent:
- 22:4b5bf1c2e1ff
- Child:
- 28:f4a4ee58d57e
update test cases
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sbouber1 | 21:17dd0d778bda | 1 | #include "mbed.h" |
sbouber1 | 21:17dd0d778bda | 2 | |
sbouber1 | 19:ee89eabe1fa2 | 3 | #include "MockSensorController.h" |
sbouber1 | 19:ee89eabe1fa2 | 4 | #include "AlarmController.h" |
sbouber1 | 19:ee89eabe1fa2 | 5 | #include "testing.h" |
sbouber1 | 19:ee89eabe1fa2 | 6 | |
sbouber1 | 21:17dd0d778bda | 7 | #define NUMBER_OF_SEC_BEFORE_CRITICAL_ALARM 30 |
sbouber1 | 22:4b5bf1c2e1ff | 8 | #define NUMBER_OF_SEC_BEFORE_DANGEROUS_ALARM 300 |
sbouber1 | 19:ee89eabe1fa2 | 9 | |
sbouber1 | 19:ee89eabe1fa2 | 10 | void TestCase::assertTrue(bool b, const char *error) { |
sbouber1 | 19:ee89eabe1fa2 | 11 | if(!b) { |
sbouber1 | 19:ee89eabe1fa2 | 12 | printf("[%s] ASSERTION FAILED: %s\r\n", this->name, error); |
sbouber1 | 19:ee89eabe1fa2 | 13 | this->failed = true; |
sbouber1 | 19:ee89eabe1fa2 | 14 | } |
sbouber1 | 19:ee89eabe1fa2 | 15 | } |
sbouber1 | 19:ee89eabe1fa2 | 16 | |
sbouber1 | 19:ee89eabe1fa2 | 17 | |
sbouber1 | 23:46cc7d776988 | 18 | MOCK(salt_mock_steady, 6.1); |
sbouber1 | 23:46cc7d776988 | 19 | MOCK(prox_mock_steady, 10.0); |
sbouber1 | 23:46cc7d776988 | 20 | |
sbouber1 | 22:4b5bf1c2e1ff | 21 | MOCK(temp_mock1, 40.1+(t/1000.0)); |
sbouber1 | 19:ee89eabe1fa2 | 22 | bool testTempDangerousHighAlarm(TestCase *tc) { |
sbouber1 | 19:ee89eabe1fa2 | 23 | |
sbouber1 | 23:46cc7d776988 | 24 | DEF_MOCKS(temp_mock1, salt_mock_steady, prox_mock_steady); |
sbouber1 | 19:ee89eabe1fa2 | 25 | |
sbouber1 | 19:ee89eabe1fa2 | 26 | AlarmController alarm(false,0,&temp,&salt,&prox); |
sbouber1 | 22:4b5bf1c2e1ff | 27 | for(int i = 0; i < NUMBER_OF_SEC_BEFORE_CRITICAL_ALARM+1; i++) { |
sbouber1 | 21:17dd0d778bda | 28 | alarm.run(); |
sbouber1 | 21:17dd0d778bda | 29 | Thread::wait(1000); |
sbouber1 | 21:17dd0d778bda | 30 | } |
sbouber1 | 21:17dd0d778bda | 31 | |
sbouber1 | 19:ee89eabe1fa2 | 32 | return alarm.is_error(); |
sbouber1 | 19:ee89eabe1fa2 | 33 | } |
sbouber1 | 19:ee89eabe1fa2 | 34 | |
sbouber1 | 19:ee89eabe1fa2 | 35 | |
sbouber1 | 22:4b5bf1c2e1ff | 36 | MOCK(temp_mock2, 29.9-(t/1000.0)); |
sbouber1 | 22:4b5bf1c2e1ff | 37 | bool testTempDangerousLowAlarm(TestCase *tc) { |
sbouber1 | 22:4b5bf1c2e1ff | 38 | |
sbouber1 | 23:46cc7d776988 | 39 | DEF_MOCKS(temp_mock2, salt_mock_steady, prox_mock_steady); |
sbouber1 | 22:4b5bf1c2e1ff | 40 | |
sbouber1 | 22:4b5bf1c2e1ff | 41 | AlarmController alarm(false,0,&temp,&salt,&prox); |
sbouber1 | 22:4b5bf1c2e1ff | 42 | for(int i = 0; i < NUMBER_OF_SEC_BEFORE_CRITICAL_ALARM+1; i++) { |
sbouber1 | 22:4b5bf1c2e1ff | 43 | alarm.run(); |
sbouber1 | 22:4b5bf1c2e1ff | 44 | Thread::wait(1000); |
sbouber1 | 22:4b5bf1c2e1ff | 45 | } |
sbouber1 | 22:4b5bf1c2e1ff | 46 | |
sbouber1 | 22:4b5bf1c2e1ff | 47 | return alarm.is_error(); |
sbouber1 | 22:4b5bf1c2e1ff | 48 | } |
sbouber1 | 22:4b5bf1c2e1ff | 49 | |
sbouber1 | 22:4b5bf1c2e1ff | 50 | MOCK(temp_mock3, 30+t*0.000001); |
sbouber1 | 22:4b5bf1c2e1ff | 51 | bool testTempLowRangeAlarm(TestCase *tc) { |
sbouber1 | 22:4b5bf1c2e1ff | 52 | |
sbouber1 | 23:46cc7d776988 | 53 | DEF_MOCKS(temp_mock3, salt_mock_steady, prox_mock_steady); |
sbouber1 | 22:4b5bf1c2e1ff | 54 | |
sbouber1 | 22:4b5bf1c2e1ff | 55 | AlarmController alarm(false,0,&temp,&salt,&prox); |
sbouber1 | 22:4b5bf1c2e1ff | 56 | for(int i = 0; i < NUMBER_OF_SEC_BEFORE_DANGEROUS_ALARM+1; i++) { |
sbouber1 | 22:4b5bf1c2e1ff | 57 | alarm.run(); |
sbouber1 | 22:4b5bf1c2e1ff | 58 | Thread::wait(1000); |
sbouber1 | 22:4b5bf1c2e1ff | 59 | } |
sbouber1 | 22:4b5bf1c2e1ff | 60 | |
sbouber1 | 22:4b5bf1c2e1ff | 61 | return alarm.is_error(); |
sbouber1 | 22:4b5bf1c2e1ff | 62 | } |
sbouber1 | 22:4b5bf1c2e1ff | 63 | |
sbouber1 | 22:4b5bf1c2e1ff | 64 | |
sbouber1 | 22:4b5bf1c2e1ff | 65 | MOCK(temp_mock4, 38+t*0.000001); |
sbouber1 | 22:4b5bf1c2e1ff | 66 | bool testTempHighRangeAlarm(TestCase *tc) { |
sbouber1 | 22:4b5bf1c2e1ff | 67 | |
sbouber1 | 23:46cc7d776988 | 68 | DEF_MOCKS(temp_mock4, salt_mock_steady, prox_mock_steady); |
sbouber1 | 22:4b5bf1c2e1ff | 69 | |
sbouber1 | 22:4b5bf1c2e1ff | 70 | AlarmController alarm(false,0,&temp,&salt,&prox); |
sbouber1 | 22:4b5bf1c2e1ff | 71 | for(int i = 0; i < NUMBER_OF_SEC_BEFORE_DANGEROUS_ALARM+1; i++) { |
sbouber1 | 22:4b5bf1c2e1ff | 72 | alarm.run(); |
sbouber1 | 22:4b5bf1c2e1ff | 73 | Thread::wait(1000); |
sbouber1 | 22:4b5bf1c2e1ff | 74 | } |
sbouber1 | 22:4b5bf1c2e1ff | 75 | |
sbouber1 | 22:4b5bf1c2e1ff | 76 | return alarm.is_error(); |
sbouber1 | 22:4b5bf1c2e1ff | 77 | } |
sbouber1 | 22:4b5bf1c2e1ff | 78 | |
sbouber1 | 19:ee89eabe1fa2 | 79 | |
sbouber1 | 23:46cc7d776988 | 80 | bool testTemperatureHeater(TestCase *tc) { |
sbouber1 | 23:46cc7d776988 | 81 | // TODO |
sbouber1 | 23:46cc7d776988 | 82 | return true; |
sbouber1 | 23:46cc7d776988 | 83 | } |
sbouber1 | 23:46cc7d776988 | 84 | |
sbouber1 | 23:46cc7d776988 | 85 | bool testAlarmWaterOverflow(TestCase *tc) { |
sbouber1 | 23:46cc7d776988 | 86 | // TODO |
sbouber1 | 23:46cc7d776988 | 87 | return true; |
sbouber1 | 23:46cc7d776988 | 88 | } |
sbouber1 | 23:46cc7d776988 | 89 | |
sbouber1 | 23:46cc7d776988 | 90 | bool testAlarmWaterLeak(TestCase *tc) { |
sbouber1 | 23:46cc7d776988 | 91 | // TODO |
sbouber1 | 23:46cc7d776988 | 92 | return true; |
sbouber1 | 23:46cc7d776988 | 93 | } |
sbouber1 | 23:46cc7d776988 | 94 | |
sbouber1 | 19:ee89eabe1fa2 | 95 | int test_main() { |
sbouber1 | 22:4b5bf1c2e1ff | 96 | TestCase t1("Test if alarm is raised when temp > 40 for 30 seconds", testTempDangerousHighAlarm); |
sbouber1 | 22:4b5bf1c2e1ff | 97 | TestCase t2("Test if alarm is raised when temp < 30 for 30 seconds", testTempDangerousLowAlarm); |
sbouber1 | 22:4b5bf1c2e1ff | 98 | TestCase t3("Test if alarm is raised when temp > 30 and < 32 for 300 seconds", testTempLowRangeAlarm); |
sbouber1 | 23:46cc7d776988 | 99 | TestCase t4("Test if alarm is raised when temp > 38 and < 40 for 300 seconds", testTempHighRangeAlarm); |
sbouber1 | 23:46cc7d776988 | 100 | TestCase t5("Test if heater gets enabled at < 32 and disabled at 32+", testTemperatureHeater); |
sbouber1 | 19:ee89eabe1fa2 | 101 | |
sbouber1 | 19:ee89eabe1fa2 | 102 | return 0; |
sbouber1 | 19:ee89eabe1fa2 | 103 | } |