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