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

/*============================================================================
* 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() */