mbed demo
/
Blinky_Tests
Tests for simple blinky library.
Fork of Blinky_Tests by
TESTS/Blinky/5_Blinks/main.cpp@1:b0034f8b2c42, 2016-09-27 (annotated)
- Committer:
- sarahmarshy
- Date:
- Tue Sep 27 22:24:35 2016 +0000
- Revision:
- 1:b0034f8b2c42
- Parent:
- 0:0d5d376157a0
- Child:
- 2:a6755ef75598
Removed true assertion on success.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sarahmarshy | 0:0d5d376157a0 | 1 | #include "Blinky.h" |
sarahmarshy | 0:0d5d376157a0 | 2 | #include "mbed.h" |
sarahmarshy | 0:0d5d376157a0 | 3 | #include "greentea-client/test_env.h" |
sarahmarshy | 0:0d5d376157a0 | 4 | #include "unity.h" |
sarahmarshy | 0:0d5d376157a0 | 5 | #include "utest.h" |
sarahmarshy | 0:0d5d376157a0 | 6 | #include "rtos.h" |
sarahmarshy | 0:0d5d376157a0 | 7 | |
sarahmarshy | 0:0d5d376157a0 | 8 | using namespace utest::v1; |
sarahmarshy | 0:0d5d376157a0 | 9 | |
sarahmarshy | 0:0d5d376157a0 | 10 | //All tests will blink the LED 5 times |
sarahmarshy | 0:0d5d376157a0 | 11 | const int expected_blinks = 5; |
sarahmarshy | 0:0d5d376157a0 | 12 | //To be set by interrupt handler |
sarahmarshy | 0:0d5d376157a0 | 13 | int measured_blinks = 0; |
sarahmarshy | 0:0d5d376157a0 | 14 | |
sarahmarshy | 0:0d5d376157a0 | 15 | //To be called by interrupt, increases the number of measured rising edges |
sarahmarshy | 0:0d5d376157a0 | 16 | void count_blinks(){ |
sarahmarshy | 0:0d5d376157a0 | 17 | TEST_ASSERT_MESSAGE(++measured_blinks<=expected_blinks, "******Too many blinks!******"); |
sarahmarshy | 0:0d5d376157a0 | 18 | } |
sarahmarshy | 0:0d5d376157a0 | 19 | |
sarahmarshy | 0:0d5d376157a0 | 20 | //Generic blink test |
sarahmarshy | 0:0d5d376157a0 | 21 | //interval => the the amount of time between blinks |
sarahmarshy | 0:0d5d376157a0 | 22 | //led => PinName of LED to blink |
sarahmarshy | 0:0d5d376157a0 | 23 | bool test_blinks(int interval, PinName led){ |
sarahmarshy | 0:0d5d376157a0 | 24 | //reset the measured blinks to 0 for each case |
sarahmarshy | 0:0d5d376157a0 | 25 | measured_blinks = 0; |
sarahmarshy | 0:0d5d376157a0 | 26 | //Set an appropriate wait time to measure exactly expected_blinks |
sarahmarshy | 0:0d5d376157a0 | 27 | //with the given interval |
sarahmarshy | 0:0d5d376157a0 | 28 | float wait_time = 2*interval*expected_blinks; |
sarahmarshy | 0:0d5d376157a0 | 29 | //Create an interrupt that calls count_blinks on rising edge of LED pin |
sarahmarshy | 0:0d5d376157a0 | 30 | InterruptIn blink_counter(led); |
sarahmarshy | 0:0d5d376157a0 | 31 | //Create Blinky |
sarahmarshy | 0:0d5d376157a0 | 32 | Blinky blinker(led, interval); |
sarahmarshy | 0:0d5d376157a0 | 33 | //Attach interrupt |
sarahmarshy | 0:0d5d376157a0 | 34 | blink_counter.rise(&count_blinks); |
sarahmarshy | 0:0d5d376157a0 | 35 | //start blinky |
sarahmarshy | 0:0d5d376157a0 | 36 | blinker.start(); |
sarahmarshy | 0:0d5d376157a0 | 37 | //Wait the appropriate amount of time for expected_blinks |
sarahmarshy | 0:0d5d376157a0 | 38 | Thread::wait(wait_time); |
sarahmarshy | 0:0d5d376157a0 | 39 | blinker.stop(); |
sarahmarshy | 0:0d5d376157a0 | 40 | } |
sarahmarshy | 0:0d5d376157a0 | 41 | |
sarahmarshy | 0:0d5d376157a0 | 42 | void blink_500(){ |
sarahmarshy | 0:0d5d376157a0 | 43 | //Blinky with a 500 ms interval between blinks |
sarahmarshy | 0:0d5d376157a0 | 44 | test_blinks(500, LED1); |
sarahmarshy | 0:0d5d376157a0 | 45 | } |
sarahmarshy | 0:0d5d376157a0 | 46 | void blink_1000(){ |
sarahmarshy | 0:0d5d376157a0 | 47 | //Blinky with a 1000 ms interval between blinks |
sarahmarshy | 0:0d5d376157a0 | 48 | test_blinks(1000, LED1); |
sarahmarshy | 0:0d5d376157a0 | 49 | } |
sarahmarshy | 0:0d5d376157a0 | 50 | |
sarahmarshy | 0:0d5d376157a0 | 51 | utest::v1::status_t test_setup(const size_t number_of_cases) { |
sarahmarshy | 0:0d5d376157a0 | 52 | // Setup Greentea using a reasonable timeout in seconds |
sarahmarshy | 0:0d5d376157a0 | 53 | GREENTEA_SETUP(40, "default_auto"); |
sarahmarshy | 0:0d5d376157a0 | 54 | return verbose_test_setup_handler(number_of_cases); |
sarahmarshy | 0:0d5d376157a0 | 55 | } |
sarahmarshy | 0:0d5d376157a0 | 56 | |
sarahmarshy | 0:0d5d376157a0 | 57 | // Test cases |
sarahmarshy | 0:0d5d376157a0 | 58 | Case cases[] = { |
sarahmarshy | 0:0d5d376157a0 | 59 | Case("Testing 500 ms interval", blink_500), |
sarahmarshy | 0:0d5d376157a0 | 60 | Case("Testing 1000 ms interval", blink_1000), |
sarahmarshy | 0:0d5d376157a0 | 61 | }; |
sarahmarshy | 0:0d5d376157a0 | 62 | |
sarahmarshy | 0:0d5d376157a0 | 63 | Specification specification(test_setup, cases); |
sarahmarshy | 0:0d5d376157a0 | 64 | |
sarahmarshy | 0:0d5d376157a0 | 65 | // Entry point into the tests |
sarahmarshy | 0:0d5d376157a0 | 66 | int main() { |
sarahmarshy | 0:0d5d376157a0 | 67 | return !Harness::run(specification); |
sarahmarshy | 0:0d5d376157a0 | 68 | } |