You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
2.6 KiB
C
123 lines
2.6 KiB
C
/*============================================================================
|
|
* ET: embedded test example for "LedDriver" from the book
|
|
* "Test Driven Development for Embedded C" by James W. Grenning
|
|
============================================================================*/
|
|
|
|
#include "LedDriver.h" /* Code Under Test (CUT) */
|
|
#include "et.h" /* ET: embedded test */
|
|
|
|
static uint16_t virtualLeds;
|
|
|
|
void setup(void) {
|
|
LedDriver_Create(&virtualLeds);
|
|
}
|
|
|
|
void teardown(void) {
|
|
}
|
|
|
|
/* test group --------------------------------------------------------------*/
|
|
TEST_GROUP("LedDriver") {
|
|
|
|
TEST("Leds Off After Create") {
|
|
uint16_t virtualLeds = 0xffff;
|
|
LedDriver_Create(&virtualLeds);
|
|
VERIFY(0 == virtualLeds);
|
|
}
|
|
|
|
TEST("Turn On Led One") {
|
|
LedDriver_TurnOn(1);
|
|
VERIFY(1 == virtualLeds);
|
|
}
|
|
|
|
TEST("Turn Off Led One") {
|
|
LedDriver_TurnOn(1);
|
|
LedDriver_TurnOff(1);
|
|
VERIFY(0 == virtualLeds);
|
|
}
|
|
|
|
TEST("Turn On Multiple Leds") {
|
|
LedDriver_TurnOn(9);
|
|
LedDriver_TurnOn(8);
|
|
VERIFY(0x180 == virtualLeds);
|
|
}
|
|
|
|
TEST("Turn Off Multiple Leds") {
|
|
LedDriver_TurnAllOn();
|
|
LedDriver_TurnOff(9);
|
|
LedDriver_TurnOff(8);
|
|
VERIFY((~0x180 & 0xffff) == virtualLeds);
|
|
}
|
|
|
|
TEST("Turn Off Any Led") {
|
|
LedDriver_TurnAllOn();
|
|
LedDriver_TurnOff(8);
|
|
VERIFY(0xff7f == virtualLeds);
|
|
}
|
|
|
|
TEST("Led Memory Is Not Readable") {
|
|
virtualLeds = 0xffff;
|
|
LedDriver_TurnOn(8);
|
|
VERIFY(0x80 == virtualLeds);
|
|
}
|
|
|
|
TEST("Upper And Lower Bounds") {
|
|
LedDriver_TurnOn(1);
|
|
LedDriver_TurnOn(16);
|
|
VERIFY(0x8001 == virtualLeds);
|
|
}
|
|
|
|
TEST("Out Of Bounds Turn On Does No Harm") {
|
|
LedDriver_TurnOn(-1);
|
|
LedDriver_TurnOn(0);
|
|
LedDriver_TurnOn(17);
|
|
LedDriver_TurnOn(3141);
|
|
VERIFY(0 == virtualLeds);
|
|
}
|
|
|
|
TEST("Out Of Bounds Turn Off Does No Harm") {
|
|
LedDriver_TurnAllOn();
|
|
|
|
LedDriver_TurnOff(-1);
|
|
LedDriver_TurnOff(0);
|
|
LedDriver_TurnOff(17);
|
|
LedDriver_TurnOff(3141);
|
|
VERIFY(0xffff == virtualLeds);
|
|
}
|
|
|
|
SKIP_TEST("Out Of Bounds To-Do") {
|
|
/* TODO: what should we do during runtime? */
|
|
VERIFY(0);
|
|
}
|
|
|
|
TEST("Is On") {
|
|
VERIFY(!LedDriver_IsOn(11));
|
|
LedDriver_TurnOn(11);
|
|
VERIFY(LedDriver_IsOn(11));
|
|
}
|
|
|
|
TEST("Is Off") {
|
|
VERIFY(LedDriver_IsOff(12));
|
|
LedDriver_TurnOn(12);
|
|
VERIFY(!LedDriver_IsOff(12));
|
|
}
|
|
|
|
TEST("Out Of Bounds Leds Are Always Off") {
|
|
VERIFY(LedDriver_IsOff(0));
|
|
VERIFY(LedDriver_IsOff(17));
|
|
VERIFY(!LedDriver_IsOn(0));
|
|
VERIFY(!LedDriver_IsOn(17));
|
|
}
|
|
|
|
TEST("All On") {
|
|
LedDriver_TurnAllOn();
|
|
VERIFY(0xffff == virtualLeds);
|
|
}
|
|
|
|
TEST("All Off") {
|
|
LedDriver_TurnAllOn();
|
|
LedDriver_TurnAllOff();
|
|
VERIFY(0 == virtualLeds);
|
|
}
|
|
|
|
} /* TEST_GROUP() */
|