Skip to content
Snippets Groups Projects
Select Git revision
  • 4701b06c335a03259e575033b93c0658e0785316
  • master default protected
  • fix-words-ann
  • wccl-rules-migration
  • develop
5 results

vargetter.cpp

Blame
  • user avatar
    Adam Wardynski authored
    ce248cb6
    History
    vargetter.cpp 2.78 KiB
    #include <boost/test/unit_test.hpp>
    #include <boost/bind.hpp>
    
    #include <libwccl/ops/functions/vargetter.h>
    #include <libwccl/values/bool.h>
    #include <libwccl/values/tset.h>
    #include <libwccl/values/strset.h>
    #include <libwccl/ops/functions/constant.h>
    
    using namespace Wccl;
    
    BOOST_AUTO_TEST_SUITE(vargetter)
    
    struct VarGetFix
    {
    	VarGetFix()
    		: sc(boost::make_shared<Corpus2::Sentence>()),
    		  cx(sc, boost::make_shared<Variables>()),
    		  tagset(),
    		  true_value(true),
    		  false_value(false),
    		  true_constant(true_value),
    		  false_constant(false_value)
    	{
    		cx.variables()->put("True_bool", true_value);
    		cx.variables()->put("False_bool", false_value);
    	}
    	SentenceContext sc;
    	FunExecContext cx;
    	Corpus2::Tagset tagset;
    
    	Bool true_value;
    	Bool false_value;
    	Constant<Bool> true_constant;
    	Constant<Bool> false_constant;
    };
    
    BOOST_FIXTURE_TEST_CASE(bool_apply, VarGetFix)
    {
    	VariableAccessor<Bool> acc_t = cx.variables()->create_accessor<Bool>("True_bool");
    	VarGetter<Bool> var_getter_t(acc_t);
    	BOOST_CHECK_EQUAL(true, var_getter_t.apply(cx)->get_value());
    	VariableAccessor<Bool> acc_f = cx.variables()->create_accessor<Bool>("False_bool");
    	VarGetter<Bool> var_getter_f(acc_f);
    	BOOST_CHECK_EQUAL(false, var_getter_f.apply(cx)->get_value());
    }
    
    BOOST_FIXTURE_TEST_CASE(bool_apply_acc_destruct, VarGetFix)
    {
    	boost::shared_ptr<VarGetter<Bool> > var_getter;
    	{
    		VariableAccessor<Bool> acc_t = cx.variables()->create_accessor<Bool>("True_bool");
    		var_getter.reset(new VarGetter<Bool>(acc_t));
    	}
    	BOOST_CHECK_EQUAL(true, var_getter->apply(cx)->get_value());
    }
    
    BOOST_FIXTURE_TEST_CASE(bool_mod, VarGetFix)
    {
    	VariableAccessor<Bool> acc_t = cx.variables()->create_accessor<Bool>("True_bool");
    	VarGetter<Bool> var_getter_t(acc_t);
    	BOOST_CHECK_EQUAL(true, var_getter_t.apply(cx)->get_value());
    	cx.variables()->get<Bool>("True_bool")->set_value(false);
    	BOOST_CHECK_EQUAL(false, var_getter_t.apply(cx)->get_value());
    	cx.variables()->put("True_bool", Bool(true));
    	BOOST_CHECK_EQUAL(true, var_getter_t.apply(cx)->get_value());
    	cx.variables()->set("True_bool", false_value);
    	BOOST_CHECK_EQUAL(false, var_getter_t.apply(cx)->get_value());
    	cx.variables()->set("True_bool", Bool(true));
    	BOOST_CHECK_EQUAL(true, var_getter_t.apply(cx)->get_value());
    }
    
    //----  To String -----
    
    BOOST_FIXTURE_TEST_CASE(bool_varget_to_string, VarGetFix)
    {
    	VariableAccessor<Bool> acc_t = cx.variables()->create_accessor<Bool>("True_bool");
    	VarGetter<Bool> var_getter_t(acc_t);
    	BOOST_CHECK_EQUAL(Bool::var_repr("True_bool"), var_getter_t.to_string(tagset));
    }
    
    BOOST_FIXTURE_TEST_CASE(bool_varget_to_raw_string, VarGetFix)
    {
    	VariableAccessor<Bool> acc_t = cx.variables()->create_accessor<Bool>("True_bool");
    	VarGetter<Bool> var_getter_t(acc_t);
    	BOOST_CHECK_EQUAL(Bool::var_repr("True_bool"), var_getter_t.to_raw_string());
    }
    
    BOOST_AUTO_TEST_SUITE_END()