From 15b4f0d6039f83c8cb6878eda6651b6a31a0db69 Mon Sep 17 00:00:00 2001 From: ilor <kailoran@gmail.com> Date: Thu, 2 Dec 2010 12:36:30 +0100 Subject: [PATCH] GetSymbols tests --- tests/CMakeLists.txt | 1 + tests/getsymbols.cpp | 117 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 tests/getsymbols.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 68fb226..2ab345c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -9,6 +9,7 @@ add_executable(tests constant.cpp context.cpp getlemmas.cpp + getsymbols.cpp getorth.cpp logicalpredicates.cpp main.cpp diff --git a/tests/getsymbols.cpp b/tests/getsymbols.cpp new file mode 100644 index 0000000..1e4116d --- /dev/null +++ b/tests/getsymbols.cpp @@ -0,0 +1,117 @@ +#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> + +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(Corpus2::make_full_mask()); + } + + 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(nowhere_constant, gnd); + BOOST_CHECK(symbols.apply(cx)->equals(empty)); + GetSymbols s2(nowhere_constant, nmb); + BOOST_CHECK(s2.apply(cx)->equals(empty)); + GetSymbols s3(nowhere_constant, pos); + BOOST_CHECK(s3.apply(cx)->equals(empty)); +} + +BOOST_FIXTURE_TEST_CASE(get_gnd, SymbolsFix) +{ + GetSymbols symbols(pos_zero_constant, gnd); + 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(pos_zero_constant, nmb); + 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(pos_zero_constant, vcl); + 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_zero_constant, pos); + 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_AUTO_TEST_SUITE_END() -- GitLab