From 55096079a77cd124deecb4889d809800aa97735d Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 9 Mar 2020 21:40:35 -0400 Subject: [PATCH] add unit tests for State class --- .gitignore | 1 + Rsconscript | 9 +++++++-- src/state.d | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8a61520..eba6839 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /.rscons* /build/ /peg-puzzle +/peg-puzzle-test diff --git a/Rsconscript b/Rsconscript index 054b5e0..5e78b05 100644 --- a/Rsconscript +++ b/Rsconscript @@ -3,8 +3,13 @@ configure do end build do - Environment.new do |env| + main_env = Environment.new do |env| env["D_IMPORT_PATH"] << "src" - env.Program("peg-puzzle", glob("src/**/*.d")) + env["sources"] = glob("src/**/*.d") + env.Program("peg-puzzle", "${sources}") + end + test_env = main_env.clone do |env| + env["DFLAGS"] += %w[-g -funittest] + env.Program("peg-puzzle-test", "${sources}") end end diff --git a/src/state.d b/src/state.d index 50a9b5e..7224b75 100644 --- a/src/state.d +++ b/src/state.d @@ -33,4 +33,26 @@ class State { return m_pegs[peg_index(row, col)]; } + + unittest + { + State s = new State(5); + assert(s.valid_position(0, 0)); + assert(s.valid_position(4, 0)); + assert(s.valid_position(4, 4)); + assert(s.valid_position(2, 2)); + assert(s.valid_position(3, 1)); + assert(!s.valid_position(0, 1)); + assert(!s.valid_position(0, -1)); + assert(!s.valid_position(5, 0)); + assert(!s.valid_position(5, 4)); + assert(!s.valid_position(4, 5)); + assert(!s.valid_position(2, 3)); + assert(!s.valid_position(0, 4)); + + assert(s.peg_present(1, 0)); + assert(s.peg_present(1, 1)); + assert(s.peg_present(4, 4)); + assert(!s.peg_present(0, 0)); + } }