Move the tests to catch2 so I can get tap output for the game.

master
Zed A. Shaw 4 months ago
parent 1fb99618bf
commit 52b59d38ad
  1. 5
      meson.build
  2. 1
      scripts/reset_build.ps1
  3. 1
      scripts/reset_build.sh
  4. 22
      tests/game_engine.cpp
  5. 3
      tests/test1.cpp

@ -20,7 +20,7 @@ fmt = dependency('fmt')
ftxui_screen = dependency('ftxui-screen')
ftxui_dom = dependency('ftxui-dom')
ftxui_component = dependency('ftxui-component')
doctest = dependency('doctest')
catch2 = dependency('catch2-with-main')
dependencies = [
fmt, libgit2package_dep, efsw_dep,
@ -43,8 +43,7 @@ executable('ftx_thread_test', 'ftx_thread_test.cpp',
runtests = executable('runtests', [
'game_engine.cpp',
'tests/test1.cpp',
'tests/game_engine.cpp'],
dependencies: dependencies + [doctest])
dependencies: dependencies + [catch2])
test('the tests', runtests)

@ -9,6 +9,7 @@ meson wrap install fmt
meson wrap install sqlite3
meson wrap install sqlitecpp
meson wrap install ftxui
meson wrap install catch2
# $env:CC="clang"
# $env:CXX="clang++"
meson setup --default-library=static --prefer-static builddir

@ -11,4 +11,5 @@ meson wrap install fmt
meson wrap install sqlite3
meson wrap install sqlitecpp
meson wrap install ftxui
meson wrap install catch2
meson setup builddir

@ -1,7 +1,7 @@
#include <doctest.h>
#include <catch2/catch_test_macros.hpp>
#include "../game_engine.hpp"
TEST_CASE("brainfuck test") {
TEST_CASE("brainfuck test", "[brainfuck]") {
Brainfucker bf;
string code{"+.>+.>+.>"};
@ -10,23 +10,23 @@ TEST_CASE("brainfuck test") {
// this is actually ticks, not code length
bf.run(code.size());
CHECK(bf.data[0] == 1);
CHECK(bf.data[1] == 1);
CHECK(bf.data[2] == 1);
REQUIRE(bf.data[0] == 1);
REQUIRE(bf.data[1] == 1);
REQUIRE(bf.data[2] == 1);
bf.reset();
CHECK(bf.data[0] == 0);
CHECK(bf.data[1] == 0);
CHECK(bf.data[2] == 0);
REQUIRE(bf.data[0] == 0);
REQUIRE(bf.data[1] == 0);
REQUIRE(bf.data[2] == 0);
CHECK(bf.code.empty());
REQUIRE(bf.code.empty());
}
TEST_CASE("game engine can start and take hit") {
TEST_CASE("game engine can start and take hit", "[brainfuck]") {
// test fails on purpose right now
GameEngine game{4};
string err{"error"};
game.hit(err);
CHECK(game.is_dead() == true);
REQUIRE(game.is_dead() == true);
}

@ -1,5 +1,4 @@
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include <doctest.h>
#include <catch2/catch_test_macros.hpp>
int factorial(int number) { return number <= 1 ? number : factorial(number - 1) * number; }

Loading…
Cancel
Save