From 2bb2a2af28f93cd3a9108c2db7f19e9f61fc5a2b Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Thu, 3 Sep 2015 23:15:09 +0200 Subject: [PATCH] [Quiz] Cleanup --- kandinsky/test/set_pixel.c | 6 +++++ poincare/Makefile | 3 ++- poincare/test/integer.cpp | 6 +++++ quiz/Makefile | 4 +++- quiz/include/quiz.h | 5 +++++ quiz/runner.c | 46 -------------------------------------- quiz/src/runner.c | 11 +++++++++ quiz/src/symbols.awk | 9 +++++++- quiz/src/symbols.h | 3 +++ 9 files changed, 44 insertions(+), 49 deletions(-) create mode 100644 kandinsky/test/set_pixel.c create mode 100644 poincare/test/integer.cpp delete mode 100644 quiz/runner.c create mode 100644 quiz/src/runner.c create mode 100644 quiz/src/symbols.h diff --git a/kandinsky/test/set_pixel.c b/kandinsky/test/set_pixel.c new file mode 100644 index 000000000..b89af1939 --- /dev/null +++ b/kandinsky/test/set_pixel.c @@ -0,0 +1,6 @@ +#include +#include + +TEST(setpixel) { + 2+2; +} diff --git a/poincare/Makefile b/poincare/Makefile index de75416d8..461ec1c5d 100644 --- a/poincare/Makefile +++ b/poincare/Makefile @@ -1,5 +1,6 @@ SFLAGS += -Ipoincare/include -objs += $(addprefix poincare/src/, expression.o number.o fraction.o power.o expression_lexer.o expression_parser.o) +objs += $(addprefix poincare/src/, expression.o integer.o number.o fraction.o power.o expression_lexer.o expression_parser.o) +tests += $(addprefix poincare/test/, integer.cpp) # Even though flex and bison will generate both implementation and headers at # once, we don't declare it in the Makefile. If we did, "make -jN" with N>1 may diff --git a/poincare/test/integer.cpp b/poincare/test/integer.cpp new file mode 100644 index 000000000..3cc19ae23 --- /dev/null +++ b/poincare/test/integer.cpp @@ -0,0 +1,6 @@ +#include +#include + +TEST(integer) { + 1+1; +} diff --git a/quiz/Makefile b/quiz/Makefile index e3c9068c9..4bc8073c8 100644 --- a/quiz/Makefile +++ b/quiz/Makefile @@ -1,3 +1,5 @@ +SFLAGS += -Iquiz/include + symbols_file = $(addprefix quiz/src/, symbols.c) products += $(symbols_file) @@ -7,4 +9,4 @@ $(symbols_file): $(tests) test_objs = $(subst .c,.o, $(subst .cpp,.o,$(tests))) -test.elf: quiz/src/symbols.o $(test_objs) +test.elf: quiz/src/symbols.o quiz/src/runner.o $(test_objs) diff --git a/quiz/include/quiz.h b/quiz/include/quiz.h index 17e78f285..50fc833db 100644 --- a/quiz/include/quiz.h +++ b/quiz/include/quiz.h @@ -1 +1,6 @@ +#ifndef QUIZ_H +#define QUIZ_H + #define TEST(foo) void test_##foo() + +#endif diff --git a/quiz/runner.c b/quiz/runner.c deleted file mode 100644 index 55f6d7306..000000000 --- a/quiz/runner.c +++ /dev/null @@ -1,46 +0,0 @@ -#include - -void assert(int condition); - -void low_level_sleep(int iterations) { - for (int i=0;iGPIOGEN = 1; - if (success) { - GPIO_MODER(GPIOG)->MODER13 = GPIO_MODE_OUTPUT; - for (int i=0;i<5; i++) { - GPIO_ODR(GPIOG)->ODR13 = 0; - low_level_sleep(50000); - GPIO_ODR(GPIOG)->ODR13 = 1; - low_level_sleep(50000); - } - } else { - GPIO_MODER(GPIOG)->MODER14 = GPIO_MODE_OUTPUT; - for (int i=0;i<5; i++) { - GPIO_ODR(GPIOG)->ODR14 = 0; - low_level_sleep(50000); - GPIO_ODR(GPIOG)->ODR14 = 1; - low_level_sleep(50000); - } - } - debugger(); -} - -void assert(int condition) { - if (!condition) { - halt(0); - } -} - -int main(int argc, char * argv[]) { - // Run assertions - halt(1); -} diff --git a/quiz/src/runner.c b/quiz/src/runner.c new file mode 100644 index 000000000..9ffa98ba0 --- /dev/null +++ b/quiz/src/runner.c @@ -0,0 +1,11 @@ +#include "symbols.h" +#include + +void hello() { + int i = 0; + while (quiz_cases[i] != NULL) { + QuizCase c = quiz_cases[i]; + c(); + i++; + } +} diff --git a/quiz/src/symbols.awk b/quiz/src/symbols.awk index 350bb1973..66be35cd0 100644 --- a/quiz/src/symbols.awk +++ b/quiz/src/symbols.awk @@ -1,3 +1,9 @@ +BEGIN { + print "#include " + print "#include \"symbols.h\"" + print +} + #FIXME: Is there a way to capture subexpression in awk? The following gsub is # kind of ugly /TEST\(([a-z0-9_]+)\)/ { gsub(/(TEST\()|(\))/, "", $1); tests = tests "," $1 } @@ -9,9 +15,10 @@ END { sub(/\(\);\n/, "", a); print a "();"; print ""; - print "void * pointers[] = {"; + print "QuizCase quiz_cases[] = {"; sub(/,/, "", b); gsub(/,/, ",\n", b); print b; + print ",NULL" print "};" } diff --git a/quiz/src/symbols.h b/quiz/src/symbols.h new file mode 100644 index 000000000..1dc58bdf8 --- /dev/null +++ b/quiz/src/symbols.h @@ -0,0 +1,3 @@ +typedef void (*QuizCase)(void); + +extern QuizCase quiz_cases[];