Newer
Older
#include <boost/test/unit_test.hpp>
#include <boost/bind.hpp>
#include <libwccl/variables.h>
#include <libpwrutils/foreach.h>
#include <iostream>
using namespace Wccl;
BOOST_AUTO_TEST_SUITE(varaccess);
struct VAfx
{
Variables v;
VAfx() {
Variables v2;
v2.put("a", new Bool(true));
v2.put("b", new Bool(true));
v2.put("c", new Bool(true));
v2.put("bb", new Bool(true));
v2.put("aa", new Position(1));
v2.put("aaa", new Position(2));
v = v2;
}
};
BOOST_FIXTURE_TEST_CASE(access, VAfx)
{
std::vector<std::string> vnames;
vnames.push_back("a");
vnames.push_back("b");
vnames.push_back("c");
vnames.push_back("bb");
foreach (const std::string vn, vnames) {
VariableAccesor<Bool> a1 = v.create_accesor<Bool>(vn);
BOOST_CHECK(v.get_fast(a1) == v.get<Bool>(vn));
v.set("a", Bool(false));
BOOST_CHECK(v.get_fast(a1) == v.get<Bool>(vn));
v.put("a", Bool(true));
BOOST_CHECK(v.get_fast(a1) == v.get<Bool>(vn));
}
}
BOOST_FIXTURE_TEST_CASE(badaccess, VAfx)
{
BOOST_CHECK_THROW(v.create_accesor<Bool>("asd"), InvalidVariableName);
BOOST_CHECK_THROW(v.create_accesor<Bool>("aaa"), VariableTypeMismatch);
}
BOOST_AUTO_TEST_SUITE_END()