diff --git a/tests/variable_test.cpp b/tests/variable_test.cpp index 0b9c525..d5de203 100644 --- a/tests/variable_test.cpp +++ b/tests/variable_test.cpp @@ -3,21 +3,47 @@ using namespace datalog; -bool freeVariableTest() { +bool freeVariableTest() +{ Variable intVar; return !intVar.isBound(); } -bool boundVariableTest() { +bool boundVariableTest() +{ Variable intVar; intVar.bind(0); return intVar.isBound(); } -TEST_CASE( "An new variable is unbound", "[variable]" ) { - REQUIRE( freeVariableTest() == true ); +bool bindUnbindTest() +{ + Variable intVar; + intVar.bind(0); + intVar.unbind(); + return !intVar.isBound(); +} + +bool storesValueTest() +{ + Variable intVar; + const int value = 100; + intVar.bind(value); + return intVar.isBound() and intVar.value() == value; +} + +bool absentValueTest() +{ + Variable intVar; + const auto &val = intVar.value(); + return true; } -TEST_CASE( "A variable with a value is bound", "[variable]" ) { - REQUIRE( boundVariableTest() == true ); +TEST_CASE("variable binding", "[variable]") +{ + REQUIRE(freeVariableTest()); + REQUIRE(boundVariableTest()); + REQUIRE(bindUnbindTest()); + REQUIRE(bindUnbindTest()); + REQUIRE_THROWS_AS(absentValueTest(), std::bad_optional_access); }