From e5baad62e6d8c0d79311cb30ff2d37161cd9872c Mon Sep 17 00:00:00 2001 From: nitrix Date: Mon, 20 Jan 2020 19:33:07 +0100 Subject: [PATCH] implement tests --- src/test/comparison/comparison.c | 29 +++++++++++++++++++++++------ src/test/print/print.c | 30 +++++++++++++++++++----------- src/test/print/print.h | 6 ++++++ src/test/test.k | 2 +- 4 files changed, 49 insertions(+), 18 deletions(-) diff --git a/src/test/comparison/comparison.c b/src/test/comparison/comparison.c index e8f876f..46bc381 100644 --- a/src/test/comparison/comparison.c +++ b/src/test/comparison/comparison.c @@ -1,5 +1,4 @@ #include -#include #include "comparison.h" #include "../print/print.h" @@ -13,7 +12,17 @@ int comparisonTest(char* name, int x, int y, int expected, int result) { } } -int boolTest(char* name, bool a, bool b, bool expected, bool result) { +int boolTestOne(char* name, bool x, bool expected, bool result) { + if (expected == result) { + bool_succPrefixOne(name, x, expected, result); + return 0; + } else { + bool_errPrefixOne(name, x, expected, result); + return 1; + } +} + +int boolTestTwo(char* name, bool a, bool b, bool expected, bool result) { if (expected == result) { bool_succInfixTwo(name, a, b, expected, result); return 0; @@ -55,8 +64,16 @@ void runComparisonTests() { comparisonTest(">=", 0, 1, 0, gte(0, 1)); comparisonTest(">=", 0, 0, 1, gte(0, 0)); - boolTest("&&", true, true, true, and(true, true)); - boolTest("&&", true, false, false, and(true, false)); - boolTest("&&", false, true, false, and(false, true)); - boolTest("&&", false, false, false, and(false, false)); + boolTestTwo("&&", true, true, true, and(true, true)); + boolTestTwo("&&", true, false, false, and(true, false)); + boolTestTwo("&&", false, true, false, and(false, true)); + boolTestTwo("&&", false, false, false, and(false, false)); + + boolTestTwo("||", true, true, true, or(true, true)); + boolTestTwo("||", true, false, true, or(true, false)); + boolTestTwo("||", false, true, true, or(false, true)); + boolTestTwo("||", false, false, false, or(false, false)); + + boolTestOne("!", true, false, not(true)); + boolTestOne("!", false, true, not(false)); } \ No newline at end of file diff --git a/src/test/print/print.c b/src/test/print/print.c index ae46b7f..21109f9 100644 --- a/src/test/print/print.c +++ b/src/test/print/print.c @@ -1,7 +1,13 @@ -#include #include #include "print.h" +char* printBool(bool a) { + if (a == true) { + return "true"; + } + return "false"; +} + void succInfixTwo(char* name, int x, int y, int expected, int result) { incSuccess(); printf("\033[0;32mSUCCESS:\t%d %s %d\tGOT: %d\tExpected: %d\033[0;0m\n", x, name, y, result, expected); @@ -42,20 +48,22 @@ void errPrefixTwo(char* name, int x, int y, int expected, int result) { printf("\033[0;31mERROR:\t\t%s(%d, %d)\tGOT: %d\tExpected: %d\033[0;0m\n", name, x, y, result, expected); } -void bool_succPrefixTwo(char* name, bool a, bool b, bool expected, bool result) { +void bool_succPrefixOne(char* name, bool x, bool expected, bool result) { incSuccess(); - printf("\033[0;32mSUCCESS:\t%s(%s, %s)\tGOT: %s\tExpected: %s\033[0;0m\n", name, printBool(a), printBool(b), printBool(result), printBool(expected)); + printf("\033[0;32mSUCCESS:\t%s%s\tGOT: %s\tExpected: %s\033[0;0m\n", name, printBool(x), printBool(result), printBool(expected)); } -void bool_errPrefixTwo(char* name, bool a, bool b, bool expected, bool result) { +void bool_errPrefixOne(char* name, bool x, bool expected, bool result) { incFailure(); - printf("\033[0;32mSUCCESS:\t%s(%s, %s)\tGOT: %s\tExpected: %s\033[0;0m\n", name, printBool(a), printBool(b), printBool(result), printBool(expected)); - + printf("\033[0;31mERROR:\t\t%s%s\tGOT: %s\tExpected: %s\033[0;0m\n", name, printBool(x), printBool(result), printBool(expected)); } -char* printBool(bool a) { - if (a == true) { - return "true"; - } - return "false"; +void bool_succInfixTwo(char* name, bool a, bool b, bool expected, bool result) { + incSuccess(); + printf("\033[0;32mSUCCESS:\t%s %s %s\tGOT: %s\tExpected: %s\033[0;0m\n", printBool(a), name, printBool(b), printBool(result), printBool(expected)); +} + +void bool_errInfixTwo(char* name, bool a, bool b, bool expected, bool result) { + incFailure(); + printf("\033[0;31mERROR:\t\t%s %s %s\tGOT: %s\tExpected: %s\033[0;0m\n", printBool(a), name, printBool(b), printBool(result), printBool(expected)); } \ No newline at end of file diff --git a/src/test/print/print.h b/src/test/print/print.h index 5673d5c..637cc5c 100644 --- a/src/test/print/print.h +++ b/src/test/print/print.h @@ -1,3 +1,5 @@ +#include + void incSuccess(); void incFailure(); @@ -6,11 +8,15 @@ void err(char* name, int expected, int result); void succPrefixOne(char* name, int x, int expected, int result); void errPrefixOne(char* name, int x, int expected, int result); + void succPrefixTwo(char* name, int x, int y, int expected, int result); void errPrefixTwo(char* name, int x, int y, int expected, int result); void succInfixTwo(char* name, int x, int y, int expected, int result); void errInfixTwo(char* name, int x, int y, int expected, int result); +void bool_succPrefixOne(char* name, bool x, bool expected, bool result); +void bool_errPrefixOne(char* name, bool x, bool expected, bool result); + void bool_succInfixTwo(char* name, bool x, bool y, bool expected, bool result); void bool_errInfixTwo(char* name, bool x, bool y, bool expected, bool result); diff --git a/src/test/test.k b/src/test/test.k index b6066a8..5478bca 100644 --- a/src/test/test.k +++ b/src/test/test.k @@ -171,7 +171,7 @@ function or(a, b) { } function not(a) { - return (!a); + return !a; } add(1, 1);