diff --git a/.gitignore b/.gitignore index ae043f6..1425034 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ builddbg/ +test-bin/ __pycache__/ compile_commands.json diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f27e8d..0a74759 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,8 @@ set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") project(AcadiaOS VERSION 0.0.1 LANGUAGES CXX ASM-ATT) +include(CTest) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_EXPORT_COMPILE_COMMANDS True) diff --git a/lib/glacier/CMakeLists.txt b/lib/glacier/CMakeLists.txt index e20b9c9..ef0489f 100644 --- a/lib/glacier/CMakeLists.txt +++ b/lib/glacier/CMakeLists.txt @@ -29,3 +29,7 @@ target_include_directories(glacier_kernel set_target_properties(glacier_kernel PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS} ${BASE_COMPILE_FLAGS} -mcmodel=kernel -mgeneral-regs-only") + +if (enable_testing) + add_subdirectory(test) +endif() diff --git a/lib/glacier/test/CMakeLists.txt b/lib/glacier/test/CMakeLists.txt new file mode 100644 index 0000000..f34214a --- /dev/null +++ b/lib/glacier/test/CMakeLists.txt @@ -0,0 +1,8 @@ +find_package(Catch2 3 REQUIRED) + +add_subdirectory(container) + +add_custom_target(build_test) +add_dependencies(build_test + glc_vec_test) + diff --git a/lib/glacier/test/container/CMakeLists.txt b/lib/glacier/test/container/CMakeLists.txt new file mode 100644 index 0000000..2fad536 --- /dev/null +++ b/lib/glacier/test/container/CMakeLists.txt @@ -0,0 +1,4 @@ +add_executable(glc_vec_test vector.cpp) +target_link_libraries(glc_vec_test glacier Catch2::Catch2WithMain) +target_include_directories(glc_vec_test PRIVATE "../..") +add_test(NAME glc_vec_test COMMAND $) diff --git a/lib/glacier/test/container/vector.cpp b/lib/glacier/test/container/vector.cpp new file mode 100644 index 0000000..872d63f --- /dev/null +++ b/lib/glacier/test/container/vector.cpp @@ -0,0 +1,10 @@ +#include "container/vector.h" + +#include + +using namespace glcr; + +TEST_CASE("Build Vector", "[vector]") { + Vector v; + REQUIRE(v.size() == 0); +} diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100755 index 0000000..45b0185 --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +set -e + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +pushd "$DIR/.." +cmake -B test-bin/ -G Ninja -D enable_testing=on +pushd test-bin/ +ninja build_test +ctest --output-on-failure +popd +popd +