Skip to content
Snippets Groups Projects
Select Git revision
  • 096d1ea81222253b1ce495ed52fed47ba92d9e3d
  • master default protected
2 results

ConfigParser.hpp

Blame
  • variables.cpp 5.80 KiB
    #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)));
    	}
    };