Skip to content
Snippets Groups Projects
Commit 37afe6e4 authored by ilor's avatar ilor
Browse files

Add tests -- mostly Variables tests for now

parent 437c4dea
Branches
No related merge requests found
......@@ -49,5 +49,5 @@ set(LIBWCCL_VERSION "${ver_major}.${ver_minor}.${ver_patch}")
find_package(Boost 1.41 REQUIRED COMPONENTS program_options filesystem regex)
add_subdirectory(libwccl)
#add_subdirectory(tests)
add_subdirectory(tests)
PROJECT( test )
include_directories( ${CMAKE_SOURCE_DIR} )
add_definitions(-DLIBWCCL_TEST_DATA_DIR="${PROJECT_SOURCE_DIR}/")
add_executable(tests
main.cpp
variables.cpp
context.cpp
)
target_link_libraries ( tests wccl ${Boost_LIBRARIES})
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIRS})
add_custom_target(test tests)
add_custom_target(test-verbose ./tests --log_level=message)
//#define BOOST_TEST_MODULE master
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(test_test)
{
int a = 0;
BOOST_CHECK(a == 0);
}
boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[])
{
return 0;
}
#include <boost/test/unit_test.hpp>
#include <boost/bind.hpp>
#include <libwccl/variables.h>
#include <iostream>
using namespace Wccl;
BOOST_AUTO_TEST_SUITE(variables)
BOOST_AUTO_TEST_CASE(v_basic)
{
Variables v;
BOOST_CHECK_EQUAL(v.size<Value>(), 0);
BOOST_CHECK_EQUAL(v.size<Bool>(), 0);
v.put("a", new Bool(true));
BOOST_CHECK_EQUAL(v.size<Value>(), 1);
BOOST_CHECK_EQUAL(v.size<Bool>(), 1);
boost::shared_ptr<Bool> b = v.get<Bool>("b");
BOOST_CHECK(!b);
b = v.get<Bool>("a");
BOOST_REQUIRE(b);
BOOST_CHECK_EQUAL(b->get_value(), true);
v.put("a", new Bool(false));
BOOST_CHECK_EQUAL(v.size<Value>(), 1);
BOOST_CHECK_EQUAL(v.size<Bool>(), 1);
b = v.get<Bool>("a");
BOOST_REQUIRE(b);
BOOST_CHECK_EQUAL(b->get_value(), false);
v.del<Position>("a");
BOOST_CHECK(v.get<Bool>("a"));
v.del<Bool>("a");
BOOST_CHECK(!v.get<Bool>("a"));
}
BOOST_AUTO_TEST_CASE(v_del_any)
{
Variables v;
v.put("a", new Bool(true));
v.put("b", new Bool(true));
v.del<Bool>("a");
BOOST_CHECK(!v.get<Value>("a"));
v.put("a", new Bool(true));
v.del<Value>("a");
BOOST_CHECK(!v.get<Value>("a"));
BOOST_CHECK(v.get<Value>("b"));
}
BOOST_AUTO_TEST_CASE(v_put_any)
{
Variables v;
boost::shared_ptr<Value> a;
a.reset(new Bool(true));
v.put_any("aaa", a);
BOOST_CHECK(v.get<Bool>("aaa"));
BOOST_CHECK(v.get<Bool>("aaa").get() == a.get());
}
struct Vfix
{
Variables v;
Vfix() {
v.put("b1", Bool(false));
v.put("b2", new Bool(true));
v.put("p1", boost::shared_ptr<Position>(new Position(1)));
v.put("p2", boost::make_shared<Position>(2));
v.put_any("p3", boost::shared_ptr<Value>(new Position(3)));
}
};
BOOST_FIXTURE_TEST_CASE(get, Vfix)
{
BOOST_CHECK(v.get<Bool>("b1"));
BOOST_CHECK(v.get<Value>("b1"));
BOOST_CHECK(!v.get<Position>("b1"));
BOOST_CHECK(v.get<Bool>("b2"));
BOOST_CHECK(v.get<Position>("p1"));
BOOST_CHECK(v.get<Position>("p2"));
BOOST_CHECK(v.get<Position>("p3"));
BOOST_CHECK(v.get<Value>("p3"));
BOOST_CHECK(!v.get<Bool>("p3"));
}
BOOST_FIXTURE_TEST_CASE(get_put, Vfix)
{
BOOST_CHECK(!v.get<Bool>("b3"));
BOOST_CHECK(v.get_put<Bool>("b1"));
BOOST_CHECK(v.get_put<Bool>("b3"));
BOOST_CHECK(v.get<Bool>("b3"));
}
BOOST_FIXTURE_TEST_CASE(get_put_bad, Vfix)
{
BOOST_CHECK_THROW(v.get_put<Bool>("p1"), VariableTypeMismatch);
}
BOOST_FIXTURE_TEST_CASE(put, Vfix)
{
boost::shared_ptr<Bool> b1 = v.get<Bool>("b1");
BOOST_CHECK_EQUAL(b1->get_value(), false);
v.put("b1", Bool(true));
BOOST_CHECK_EQUAL(b1->get_value(), false);
boost::shared_ptr<Bool> b2 = v.get<Bool>("b1");
BOOST_CHECK(b1.get() != b2.get());
BOOST_CHECK_EQUAL(b2->get_value(), true);
}
BOOST_FIXTURE_TEST_CASE(put_bad, Vfix)
{
BOOST_CHECK_THROW(v.put("p1", Bool(true)), VariableTypeMismatch);
}
BOOST_FIXTURE_TEST_CASE(set, Vfix)
{
boost::shared_ptr<Bool> b1 = v.get<Bool>("b1");
BOOST_CHECK_EQUAL(b1->get_value(), false);
v.set("b1", Bool(true));
BOOST_CHECK_EQUAL(b1->get_value(), true);
}
BOOST_FIXTURE_TEST_CASE(set_new, Vfix)
{
BOOST_CHECK(!v.get<Bool>("b3"));
v.set("b3", Bool(false));
BOOST_CHECK(v.get<Bool>("b3"));
}
BOOST_FIXTURE_TEST_CASE(set_bad, Vfix)
{
BOOST_CHECK_THROW(v.set("p1", Bool(true)), VariableTypeMismatch);
}
BOOST_FIXTURE_TEST_CASE(del, Vfix)
{
v.del<Bool>("b1");
BOOST_CHECK(!v.get<Bool>("b1"));
v.del<Bool>("p2");
BOOST_CHECK(v.get<Value>("p2"));
v.del_any("p2");
BOOST_CHECK(!v.get<Value>("p2"));
}
BOOST_AUTO_TEST_SUITE_END()
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment