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@22:4b5bf1c2e1ff, 2016-06-13 (annotated)
- Committer:
- sbouber1
- Date:
- Mon Jun 13 13:25:57 2016 +0000
- Revision:
- 22:4b5bf1c2e1ff
- Parent:
- 21:17dd0d778bda
- Child:
- 23:46cc7d776988
temp alarm 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 | 22:4b5bf1c2e1ff | 18 | MOCK(temp_mock1, 40.1+(t/1000.0)); |
sbouber1 | 22:4b5bf1c2e1ff | 19 | MOCK(salt_mock1, 6.1); |
sbouber1 | 19:ee89eabe1fa2 | 20 | MOCK(prox_mock1, 10.0); |
sbouber1 | 19:ee89eabe1fa2 | 21 | bool testTempDangerousHighAlarm(TestCase *tc) { |
sbouber1 | 19:ee89eabe1fa2 | 22 | |
sbouber1 | 19:ee89eabe1fa2 | 23 | DEF_MOCKS(temp_mock1, salt_mock1, prox_mock1); |
sbouber1 | 19:ee89eabe1fa2 | 24 | |
sbouber1 | 19:ee89eabe1fa2 | 25 | AlarmController alarm(false,0,&temp,&salt,&prox); |
sbouber1 | 22:4b5bf1c2e1ff | 26 | for(int i = 0; i < NUMBER_OF_SEC_BEFORE_CRITICAL_ALARM+1; i++) { |
sbouber1 | 21:17dd0d778bda | 27 | alarm.run(); |
sbouber1 | 21:17dd0d778bda | 28 | Thread::wait(1000); |
sbouber1 | 21:17dd0d778bda | 29 | } |
sbouber1 | 21:17dd0d778bda | 30 | |
sbouber1 | 19:ee89eabe1fa2 | 31 | return alarm.is_error(); |
sbouber1 | 19:ee89eabe1fa2 | 32 | } |
sbouber1 | 19:ee89eabe1fa2 | 33 | |
sbouber1 | 19:ee89eabe1fa2 | 34 | |
sbouber1 | 22:4b5bf1c2e1ff | 35 | MOCK(temp_mock2, 29.9-(t/1000.0)); |
sbouber1 | 22:4b5bf1c2e1ff | 36 | bool testTempDangerousLowAlarm(TestCase *tc) { |
sbouber1 | 22:4b5bf1c2e1ff | 37 | |
sbouber1 | 22:4b5bf1c2e1ff | 38 | DEF_MOCKS(temp_mock2, salt_mock1, prox_mock1); |
sbouber1 | 22:4b5bf1c2e1ff | 39 | |
sbouber1 | 22:4b5bf1c2e1ff | 40 | AlarmController alarm(false,0,&temp,&salt,&prox); |
sbouber1 | 22:4b5bf1c2e1ff | 41 | for(int i = 0; i < NUMBER_OF_SEC_BEFORE_CRITICAL_ALARM+1; i++) { |
sbouber1 | 22:4b5bf1c2e1ff | 42 | alarm.run(); |
sbouber1 | 22:4b5bf1c2e1ff | 43 | Thread::wait(1000); |
sbouber1 | 22:4b5bf1c2e1ff | 44 | } |
sbouber1 | 22:4b5bf1c2e1ff | 45 | |
sbouber1 | 22:4b5bf1c2e1ff | 46 | return alarm.is_error(); |
sbouber1 | 22:4b5bf1c2e1ff | 47 | } |
sbouber1 | 22:4b5bf1c2e1ff | 48 | |
sbouber1 | 22:4b5bf1c2e1ff | 49 | MOCK(temp_mock3, 30+t*0.000001); |
sbouber1 | 22:4b5bf1c2e1ff | 50 | bool testTempLowRangeAlarm(TestCase *tc) { |
sbouber1 | 22:4b5bf1c2e1ff | 51 | |
sbouber1 | 22:4b5bf1c2e1ff | 52 | DEF_MOCKS(temp_mock3, salt_mock1, prox_mock1); |
sbouber1 | 22:4b5bf1c2e1ff | 53 | |
sbouber1 | 22:4b5bf1c2e1ff | 54 | AlarmController alarm(false,0,&temp,&salt,&prox); |
sbouber1 | 22:4b5bf1c2e1ff | 55 | for(int i = 0; i < NUMBER_OF_SEC_BEFORE_DANGEROUS_ALARM+1; i++) { |
sbouber1 | 22:4b5bf1c2e1ff | 56 | alarm.run(); |
sbouber1 | 22:4b5bf1c2e1ff | 57 | Thread::wait(1000); |
sbouber1 | 22:4b5bf1c2e1ff | 58 | } |
sbouber1 | 22:4b5bf1c2e1ff | 59 | |
sbouber1 | 22:4b5bf1c2e1ff | 60 | return alarm.is_error(); |
sbouber1 | 22:4b5bf1c2e1ff | 61 | } |
sbouber1 | 22:4b5bf1c2e1ff | 62 | |
sbouber1 | 22:4b5bf1c2e1ff | 63 | |
sbouber1 | 22:4b5bf1c2e1ff | 64 | MOCK(temp_mock4, 38+t*0.000001); |
sbouber1 | 22:4b5bf1c2e1ff | 65 | bool testTempHighRangeAlarm(TestCase *tc) { |
sbouber1 | 22:4b5bf1c2e1ff | 66 | |
sbouber1 | 22:4b5bf1c2e1ff | 67 | DEF_MOCKS(temp_mock4, salt_mock1, prox_mock1); |
sbouber1 | 22:4b5bf1c2e1ff | 68 | |
sbouber1 | 22:4b5bf1c2e1ff | 69 | AlarmController alarm(false,0,&temp,&salt,&prox); |
sbouber1 | 22:4b5bf1c2e1ff | 70 | for(int i = 0; i < NUMBER_OF_SEC_BEFORE_DANGEROUS_ALARM+1; i++) { |
sbouber1 | 22:4b5bf1c2e1ff | 71 | alarm.run(); |
sbouber1 | 22:4b5bf1c2e1ff | 72 | Thread::wait(1000); |
sbouber1 | 22:4b5bf1c2e1ff | 73 | } |
sbouber1 | 22:4b5bf1c2e1ff | 74 | |
sbouber1 | 22:4b5bf1c2e1ff | 75 | return alarm.is_error(); |
sbouber1 | 22:4b5bf1c2e1ff | 76 | } |
sbouber1 | 22:4b5bf1c2e1ff | 77 | |
sbouber1 | 19:ee89eabe1fa2 | 78 | |
sbouber1 | 19:ee89eabe1fa2 | 79 | int test_main() { |
sbouber1 | 22:4b5bf1c2e1ff | 80 | TestCase t1("Test if alarm is raised when temp > 40 for 30 seconds", testTempDangerousHighAlarm); |
sbouber1 | 22:4b5bf1c2e1ff | 81 | TestCase t2("Test if alarm is raised when temp < 30 for 30 seconds", testTempDangerousLowAlarm); |
sbouber1 | 22:4b5bf1c2e1ff | 82 | TestCase t3("Test if alarm is raised when temp > 30 and < 32 for 300 seconds", testTempLowRangeAlarm); |
sbouber1 | 22:4b5bf1c2e1ff | 83 | TestCase t4("Test if alarm is raised when temp > 38 and < 40 for 300 seconds", testTempHighRangeAlarm); |
sbouber1 | 19:ee89eabe1fa2 | 84 | |
sbouber1 | 19:ee89eabe1fa2 | 85 | return 0; |
sbouber1 | 19:ee89eabe1fa2 | 86 | } |