Create project skeleton

This commit is contained in:
2024-12-25 18:08:50 +00:00
commit 21cf170b5a
8 changed files with 137 additions and 0 deletions

21
tests/CMakeLists.txt Normal file
View File

@@ -0,0 +1,21 @@
add_library(testing testing.c)
set_default_target_options(testing)
target_include_directories(testing PUBLIC include)
function(add_test_suite source)
string(REGEX REPLACE ".c$" "" name ${source})
add_executable(${name} ${source})
set_default_target_options(${name})
target_link_libraries(${name} PRIVATE engine testing)
add_test(NAME ${name} COMMAND ${name})
endfunction()
function(add_test_suites)
foreach(source ${ARGN})
add_test_suite(${source})
endforeach()
endfunction()
add_test_suites(
foo_tests.c
)

20
tests/foo_tests.c Normal file
View File

@@ -0,0 +1,20 @@
/*
* Copyright (c) Camden Dixie O'Brien
* SPDX-License-Identifier: AGPL-3.0-only
*/
#include "foo.h"
#include "testing.h"
static void test_foo(void)
{
const int res = foo();
ASSERT_EQ(42, res);
}
int main(void)
{
TESTING_BEGIN();
test_foo();
return TESTING_END();
}

39
tests/include/testing.h Normal file
View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) Camden Dixie O'Brien
* SPDX-License-Identifier: AGPL-3.0-only
*/
#ifndef TESTING_H
#define TESTING_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TESTING_BEGIN() fail_count = 0
#define TESTING_END() fail_count == 0 ? EXIT_SUCCESS : EXIT_FAILURE
#define FAIL \
do { \
++fail_count; \
printf("%s: FAIL @ %s:%d\n", __func__, __FILE__, __LINE__); \
return; \
} while (0)
#define ASSERT_FALSE(p) \
do { \
if (p) \
FAIL; \
} while (0)
#define ASSERT_TRUE(p) ASSERT_FALSE(!(p))
#define ASSERT_EQ(x, y) ASSERT_FALSE((x) != (y))
#define ASSERT_NE(x, y) ASSERT_FALSE((x) == (y))
#define ASSERT_LT(x, y) ASSERT_FALSE((x) <= (y))
#define ASSERT_NULL(p) ASSERT_FALSE(NULL != (p))
#define ASSERT_NOT_NULL(p) ASSERT_FALSE(NULL == (p))
#define ASSERT_MEM_EQ(p, q, n) ASSERT_FALSE(memcmp(p, q, n) != 0)
extern int fail_count;
#endif

8
tests/testing.c Normal file
View File

@@ -0,0 +1,8 @@
/*
* Copyright (c) Camden Dixie O'Brien
* SPDX-License-Identifier: AGPL-3.0-only
*/
#include "testing.h"
int fail_count;