Browse Source

added exampes for chapter 04

master
T. Meissner 9 years ago
parent
commit
a3eb346cd7
6 changed files with 194 additions and 0 deletions
  1. +74
    -0
      tdd_for_embedded_c/chapter04/Makefile
  2. +30
    -0
      tdd_for_embedded_c/chapter04/src/LedDriver.c
  3. +8
    -0
      tdd_for_embedded_c/chapter04/src/LedDriver.h
  4. +15
    -0
      tdd_for_embedded_c/chapter04/test/AllTests.c
  5. +56
    -0
      tdd_for_embedded_c/chapter04/test/LedDriverTest.c
  6. +11
    -0
      tdd_for_embedded_c/chapter04/test/LedDriverTestRunner.c

+ 74
- 0
tdd_for_embedded_c/chapter04/Makefile View File

@ -0,0 +1,74 @@
# ==========================================
# Unity Project - A Test Framework for C
# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
# [Released under MIT License. Please refer to license.txt for details]
# ==========================================
#We try to detect the OS we are running on, and adjust commands as needed
ifeq ($(OS),Windows_NT)
CLEANUP = del /F /Q
MKDIR = mkdir
TARGET_EXTENSION=.exe
else
CLEANUP = rm -rf
MKDIR = mkdir -p
TARGET_EXTENSION=
endif
UNITY_ROOT=../../../../Unity
C_COMPILER=gcc
CFLAGS = -std=c11
CFLAGS += -Wall
#CFLAGS += -Wextra
CFLAGS += -Werror
CFLAGS += -Wpointer-arith
CFLAGS += -Wcast-align
CFLAGS += -Wwrite-strings
CFLAGS += -Wswitch-default
CFLAGS += -Wunreachable-code
CFLAGS += -Winit-self
CFLAGS += -Wmissing-field-initializers
CFLAGS += -Wno-unknown-pragmas
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wundef
CFLAGS += -Wold-style-definition
CFLAGS += -Wmissing-prototypes
CFLAGS += -Wmissing-declarations
CFLAGS += -g
CFLAGS += -ftest-coverage
CFLAGS += -fprofile-arcs
TARGET_BASE=test_leddriver
TARGET = $(TARGET_BASE)$(TARGET_EXTENSION)
SRC_FILES=\
$(UNITY_ROOT)/extras/fixture/src/unity_fixture.c \
$(UNITY_ROOT)/src/unity.c \
../test/LedDriverTest.c \
../test/LedDriverTestRunner.c \
../test/AllTests.c \
../src/LedDriver.c
INC_DIRS=-I$(UNITY_ROOT)/src -I$(UNITY_ROOT)/extras/fixture/src
SYMBOLS=
all: clean tests
.PHONY: tests
tests: build/$(TARGET)
build/$(TARGET): test/*.c src/*.h src/*.c
@echo "Compiling"; cd build; $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES) -o $(TARGET)
@echo "Running tests"; ./build/$(TARGET)
@echo "Preparing coverage"; cp build/LedDriver.gc* src/
@echo "Running coverage"; cd src; gcovr -r . -b -p --html --html-details -o ../build/cover/test.html
@echo "Clearing intermediate files"; rm src/*.gc* build/*.gc*
.PHONY: clean
clean:
@echo "Cleaning $<"; $(CLEANUP) build/$(TARGET) build/*.* build/cover/*

+ 30
- 0
tdd_for_embedded_c/chapter04/src/LedDriver.c View File

@ -0,0 +1,30 @@
#include "LedDriver.h"
static uint16_t *ledsAddress;
static uint16_t convertLedNumberToBit(int ledNumber) {
return 1 << (ledNumber - 1);
}
void LedDriver_Create(uint16_t *address) {
ledsAddress = address;
*ledsAddress = 0x0000;
}
void LedDriver_Destroy(uint16_t *address) {
}
void LedDriver_TurnOn(int ledNumber) {
*ledsAddress |= convertLedNumberToBit(ledNumber);
}
void LedDriver_TurnOff(int ledNumber) {
*ledsAddress = 0x0000;
}

+ 8
- 0
tdd_for_embedded_c/chapter04/src/LedDriver.h View File

@ -0,0 +1,8 @@
#include <stdint.h>
void LedDriver_Create(uint16_t *address);
void LedDriver_Destroy(uint16_t *address);
void LedDriver_TurnOn(int ledNumber);
void LedDriver_TurnOff(int ledNumber);

+ 15
- 0
tdd_for_embedded_c/chapter04/test/AllTests.c View File

@ -0,0 +1,15 @@
#include "unity_fixture.h"
static void RunAllTests(void)
{
RUN_TEST_GROUP(LedDriver);
}
int main(int argc, const char * argv[])
{
return UnityMain(argc, argv, RunAllTests);
}

+ 56
- 0
tdd_for_embedded_c/chapter04/test/LedDriverTest.c View File

@ -0,0 +1,56 @@
#include "unity_fixture.h"
#include "../src/LedDriver.h"
TEST_GROUP(LedDriver);
static uint16_t virtualLeds;
TEST_SETUP(LedDriver) {
LedDriver_Create(&virtualLeds);
}
TEST_TEAR_DOWN(LedDriver) {
}
TEST(LedDriver, LedsOffAfterCreate) {
uint16_t virtualLeds = 0xFFFF;
LedDriver_Create(&virtualLeds);
TEST_ASSERT_EQUAL_HEX16(0x0000, virtualLeds);
}
TEST(LedDriver, TurnOnLedOne) {
LedDriver_TurnOn(1);
TEST_ASSERT_EQUAL_HEX16(0x0001, virtualLeds);
}
TEST(LedDriver, TurnOffLedOne) {
LedDriver_TurnOn(1);
LedDriver_TurnOff(1);
TEST_ASSERT_EQUAL_HEX16(0x0000, virtualLeds);
}
TEST(LedDriver, TurnOnMultipleLeds) {
LedDriver_TurnOn(8);
LedDriver_TurnOn(9);
TEST_ASSERT_EQUAL_HEX16(0x0180, virtualLeds);
}

+ 11
- 0
tdd_for_embedded_c/chapter04/test/LedDriverTestRunner.c View File

@ -0,0 +1,11 @@
#include "unity_fixture.h"
TEST_GROUP_RUNNER(LedDriver) {
RUN_TEST_CASE(LedDriver, LedsOffAfterCreate);
RUN_TEST_CASE(LedDriver, TurnOnLedOne);
RUN_TEST_CASE(LedDriver, TurnOffLedOne);
RUN_TEST_CASE(LedDriver, TurnOnMultipleLeds);
}

Loading…
Cancel
Save