aboutsummaryrefslogtreecommitdiff
path: root/test.h
diff options
context:
space:
mode:
authorRaymaekers Luca <luca@spacehb.net>2025-04-27 12:52:06 +0200
committerRaymaekers Luca <luca@spacehb.net>2025-04-27 13:05:34 +0200
commitf87f7b4f0aaccc65d03ccee5bb11915ead6fb0e1 (patch)
treed54df0bfde3dbffa02b1f138af4f12456f261e54 /test.h
parent0574f5a7c5159a2ae1d7d2182cec982509947db9 (diff)
First pass at preparing for Github
Diffstat (limited to 'test.h')
-rw-r--r--test.h217
1 files changed, 0 insertions, 217 deletions
diff --git a/test.h b/test.h
deleted file mode 100644
index febdabd..0000000
--- a/test.h
+++ /dev/null
@@ -1,217 +0,0 @@
-// Library used for writing tests, must be included once for definitions and
-// once for the `main()` function.
-//
-// DOCUMENTATION
-// Expect(expr)
-// Macro that will return early if the expression is false, calling
-// `tb_shutdown()` to save the terminal. It will also print the expression
-// and line on which it occurred for convenience
-//
-// test_functions TestFunctions
-// Global variable containing the function (test). This array is
-// 0-terminated.
-//
-// TESTFUNC()
-// Macro for adding functions to TestFunctions array conveniently.
-//
-// tb_get_cell(x, y)
-// Function
-//
-// EXAMPLE
-// #define TEST_IMPL
-// #include "test.h"
-//
-// bool FooTest()
-// {
-// Expect(0 == 1);
-// return true;
-// }
-//
-// test_functions TestFunctions[] = {
-// TESTFUNC(FooTest),
-// {0}
-// }
-//
-// int main(int Argc, int Argv)
-// {
-// Test(Argc, Argv);
-// }
-
-#ifndef TEST_H
-#define TEST_H
-
-#include <stdio.h>
-#include <stdbool.h>
-
-#include "chatty.h"
-
-/* Macro's */
-#define Expect(expr) if (!(expr)) \
- { \
- tb_shutdown(); \
- printf("\n %d: %s\n", __LINE__, #expr); \
- return false; \
- }
-
-#define TESTFUNC(func) { func, #func }
-
-/* Types */
-typedef struct {
- bool (*Func)(void);
- const char * Name;
-} test_functions;
-
-typedef struct {
- s32 X, Y, W, H;
-} rect;
-
-/* Declarations */
-struct tb_cell tb_get_cell(s32 x, s32 y);
-void RectCopy(rect Dest, rect Source);
-bool RectCmp(rect Dest, rect Source);
-bool TextCmp(s32 X, s32 Y, wchar_t *Text, s32 TextLen);
-bool TextCmpWithColor(s32 X, s32 Y, wchar_t *Text, s32 TextLen, s32 fg, s32 bg);
-
-/* Global variables */
-void (*Before)(void);
-void (*After)(void);
-
-/* Functions*/
-struct tb_cell
-tb_get_cell(s32 x, s32 y)
-{
- return global.back.cells[global.width * y + x];
-}
-
-void
-RectCopy(rect Dest, rect Source)
-{
- for (u32 Y = 0; Y < Source.H; Y++)
- {
- for (u32 X = 0; X < Source.W; X++)
- {
- struct tb_cell Cell = tb_get_cell(Source.X + X, Source.Y + Y);
- tb_set_cell(Dest.X + X, Dest.Y + Y, Cell.ch, Cell.fg, Cell.bg);
- }
- }
-}
-
-bool
-RectCmp(rect Dest, rect Source)
-{
- for (u32 Y = 0; Y < Source.H; Y++)
- {
- for (u32 X = 0; X < Source.W; X++)
- {
- struct tb_cell SourceCell = tb_get_cell(Source.X + X, Source.Y + Y);
- struct tb_cell DestCell = tb_get_cell(Dest.X + X, Dest.Y + Y);
- if (!(SourceCell.fg == DestCell.fg &&
- SourceCell.bg == DestCell.bg &&
- SourceCell.ch == DestCell.ch))
- {
- return false;
- }
- }
- }
-
- return true;
-}
-
-bool
-TextCmp(s32 X, s32 Y, wchar_t *Text, s32 TextLen)
-{
- for (u32 At = 0;
- At < TextLen;
- At++)
- {
- struct tb_cell DestCell = tb_get_cell(X++, Y);
- if (DestCell.ch != Text[At]) return false;
- }
-
- return true;
-}
-
-bool
-TextCmpWithColor(s32 X, s32 Y, wchar_t *Text, s32 TextLen, s32 fg, s32 bg)
-{
- for (u32 At = 0;
- At < TextLen;
- At++)
- {
- struct tb_cell DestCell = tb_get_cell(X++, Y);
- if (DestCell.ch != Text[At] ||
- DestCell.fg != fg ||
- DestCell.bg != bg)
- {
- return false;
- }
- }
-
- return true;
-}
-
-int
-Test(test_functions *TestFunctions, int Argc, char *Argv[])
-{
- u32 TestFunctionsLen = 0;
- while (TestFunctions[TestFunctionsLen].Func) TestFunctionsLen++;
-
- if (Argc > 1)
- {
- for (u32 Arg = 0;
- Arg < Argc;
- Arg++)
- {
- char *Function = Argv[Arg];
-
- for (u32 TestFunc = 0;
- TestFunc < TestFunctionsLen;
- TestFunc++)
- {
- if(!strcmp(Function, TestFunctions[TestFunc].Name))
- {
- printf("%s ", TestFunctions[TestFunc].Name);
-
- if (Before) Before();
- bool Ret = TestFunctions[TestFunc].Func();
- if (After) After();
-
- if (Ret)
- {
- printf("\033[32mPASSED\033[0m\n");
- }
- else
- {
- printf("\033[31mFAILED\033[0m\n"); \
- }
- }
- }
- }
- }
- else
- {
- for (int At = 0;
- TestFunctions[At].Func;
- At++)
- {
- printf("%s ", TestFunctions[At].Name);
-
- if (Before) Before();
- bool Ret = TestFunctions[At].Func();
- if (After) After();
-
- if (Ret)
- {
- printf("\033[32mPASSED\033[0m\n");
- }
- else
- {
- printf("\033[31mFAILED\033[0m\n"); \
- }
- }
- }
-
- return 0;
-}
-
-#endif // TEST_H