Skip to content
Snippets Groups Projects
Select Git revision
  • 9789d0ec6efcb3ff08f2c7dc8eaaf1e6c37b193b
  • master default protected
  • vertical_relations
  • lu_without_semantic_frames
  • hierarchy
  • additional-unification-filters
  • v0.1.1
  • v0.1.0
  • v0.0.9
  • v0.0.8
  • v0.0.7
  • v0.0.6
  • v0.0.5
  • v0.0.4
  • v0.0.3
  • v0.0.2
  • v0.0.1
17 results

Dockerfile-frontend

Blame
  • getsymbols.cpp 4.87 KiB
    #include <boost/test/unit_test.hpp>
    #include <boost/bind.hpp>
    #include <boost/shared_ptr.hpp>
    #include <libcorpus2/sentence.h>
    #include <libcorpus2/tagsetmanager.h>
    
    #include <libwccl/ops/functions/constant.h>
    #include <libwccl/ops/functions/tset/getsymbols.h>
    #include <libwccl/ops/functions/tset/getwordclass.h>
    
    using namespace Wccl;
    
    BOOST_AUTO_TEST_SUITE(get_symbols_op)
    
    struct SymbolsFix
    {
    	SymbolsFix()
    		: s(boost::make_shared<Corpus2::Sentence>()),
    		  sc(s),
    		  tagset(Corpus2::get_named_tagset("kipi")),
    		  cx(sc, boost::make_shared<Variables>()),
    		  pos_zero(0),
    		  nowhere(Position::Nowhere),
    		  pos_zero_constant(new Constant<Position>(pos_zero)),
    		  nowhere_constant(new Constant<Position>(nowhere))
    	{
    		Corpus2::Token* the_token = new Corpus2::Token(
    				"One",
    				PwrNlp::Whitespace::ManySpaces);
    		Corpus2::Lexeme l1("aaa", tagset.parse_simple_tag("subst:sg:nom:m1", false));
    		Corpus2::Lexeme l2("aaa", tagset.parse_simple_tag("subst:sg:nom:m2", false));
    		the_token->add_lexeme(l1);
    		the_token->add_lexeme(l2);
    		s->append(the_token);
    		Corpus2::Token* another_token = new Corpus2::Token(
    				"Two",
    				PwrNlp::Whitespace::ManySpaces);
    		Corpus2::Lexeme l3("aaa", tagset.parse_simple_tag("subst:pl:dat:f", false));
    		Corpus2::Lexeme l4("aaa", tagset.parse_simple_tag("prep:nom:wok", false));
    		Corpus2::Lexeme l5("aaa", tagset.parse_simple_tag("adja", false));
    		another_token->add_lexeme(l3);
    		another_token->add_lexeme(l4);
    		another_token->add_lexeme(l5);
    		s->append(another_token);
    		gnd = tagset.parse_symbol("gnd");
    		nmb = tagset.parse_symbol("nmb");
    		vcl = tagset.parse_symbol("vcl");
    		pos.set_pos(-1); //todo
    	}
    
    	boost::shared_ptr<Corpus2::Sentence> s;
    	SentenceContext sc;
    	const Corpus2::Tagset& tagset;
    
    	FunExecContext cx;
    	Position pos_zero;
    	Position nowhere;
    	boost::shared_ptr<Function<Position> > pos_zero_constant;
    	boost::shared_ptr<Function<Position> > nowhere_constant;
    	TSet empty;
    	Corpus2::Tag gnd;
    	Corpus2::Tag nmb;
    	Corpus2::Tag vcl;
    	Corpus2::Tag pos;
    };
    
    BOOST_FIXTURE_TEST_CASE(symbols_nowhere, SymbolsFix)
    {
    	GetSymbols symbols(gnd, nowhere_constant);
    	BOOST_CHECK(symbols.apply(cx)->equals(empty));
    	GetSymbols s2(nmb, nowhere_constant);
    	BOOST_CHECK(s2.apply(cx)->equals(empty));
    	GetSymbols s3(pos, nowhere_constant);
    	BOOST_CHECK(s3.apply(cx)->equals(empty));
    }
    
    BOOST_FIXTURE_TEST_CASE(symbols_outside, SymbolsFix)
    {
    	GetSymbols symbols(gnd, boost::shared_ptr<Function<Position> >(
    			new Constant<Position>(Position(-1))));
    	BOOST_CHECK(symbols.apply(cx)->equals(empty));
    }
    
    BOOST_FIXTURE_TEST_CASE(get_gnd, SymbolsFix)
    {
    	GetSymbols symbols(gnd, pos_zero_constant);
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{m1,m2}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{f}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{}");
    }
    
    BOOST_FIXTURE_TEST_CASE(get_nmb, SymbolsFix)
    {
    	GetSymbols symbols(nmb, pos_zero_constant);
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{sg}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{pl}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{}");
    }
    
    BOOST_FIXTURE_TEST_CASE(get_vcl, SymbolsFix)
    {
    	GetSymbols symbols(vcl, pos_zero_constant);
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{wok}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{}");
    }
    
    BOOST_FIXTURE_TEST_CASE(get_pos, SymbolsFix)
    {
    	GetSymbols symbols(pos, pos_zero_constant);
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{subst}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{adja,prep,subst}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(symbols.apply(cx)->to_string(tagset), "{}");
    }
    
    BOOST_FIXTURE_TEST_CASE(get_symbols_to_string, SymbolsFix)
    {
    	GetSymbols symbols(nmb, pos_zero_constant);
    	BOOST_CHECK_EQUAL("nmb[0]", symbols.to_string(tagset));
    }
    
    BOOST_FIXTURE_TEST_CASE(get_symbols_to_raw_string, SymbolsFix)
    {
    	GetSymbols symbols(nmb, pos_zero_constant);
    	std::string expected = nmb.raw_dump() + "[0]";
    	BOOST_CHECK_EQUAL(expected, symbols.to_raw_string());
    }
    
    //
    //  ---------- GetWordClass cases ----------
    //
    
    BOOST_FIXTURE_TEST_CASE(get_word_class, SymbolsFix)
    {
    	GetWordClass wclass(pos_zero_constant);
    	BOOST_CHECK_EQUAL(wclass.apply(cx)->to_string(tagset), "{subst}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(wclass.apply(cx)->to_string(tagset), "{adja,prep,subst}");
    	sc.advance();
    	BOOST_CHECK_EQUAL(wclass.apply(cx)->to_string(tagset), "{}");
    }
    
    BOOST_FIXTURE_TEST_CASE(get_word_class_to_string, SymbolsFix)
    {
    	GetWordClass wclass(pos_zero_constant);
    	BOOST_CHECK_EQUAL("class[0]", wclass.to_string(tagset));
    }
    
    BOOST_FIXTURE_TEST_CASE(get_word_class_to_raw_string, SymbolsFix)
    {
    	GetWordClass wclass(pos_zero_constant);
    	BOOST_CHECK_EQUAL("class[0]", wclass.to_raw_string());
    }
    
    BOOST_AUTO_TEST_SUITE_END()