#include <boost/test/unit_test.hpp> #include <boost/bind.hpp> #include <boost/shared_ptr.hpp> #include <libcorpus2/sentence.h> #include <libwccl/ops/functions/constant.h> #include <libwccl/ops/functions/bool/predicates/regex.h> #include <libwccl/values/bool.h> #include <libwccl/values/strset.h> #include <libwccl/sentencecontext.h> #include <unicode/unistr.h> using namespace Wccl; BOOST_AUTO_TEST_SUITE(regexing) struct RegexFix { RegexFix() : sc(boost::make_shared<Corpus2::Sentence>()), tagset(), cx(sc, boost::make_shared<Variables>()) { } SentenceContext sc; Corpus2::Tagset tagset; FunExecContext cx; }; BOOST_FIXTURE_TEST_CASE(positive_sanity_check, RegexFix) { StrSet sanity; sanity.insert("word"); boost::shared_ptr<Function<StrSet> > sanity_expr(new Constant<StrSet>(sanity)); Regex r(sanity_expr, "word"); BOOST_CHECK(r.apply(cx)->get_value()); } BOOST_FIXTURE_TEST_CASE(negative_sanity_check, RegexFix) { StrSet sanity; sanity.insert("word"); boost::shared_ptr<Function<StrSet> > sanity_expr(new Constant<StrSet>(sanity)); Regex r(sanity_expr, "Word"); BOOST_CHECK(!r.apply(cx)->get_value()); } //TODO: need more regex tests... //------------ To string ---------- BOOST_FIXTURE_TEST_CASE(regex_tostring, RegexFix) { StrSet sanity; sanity.insert("word"); boost::shared_ptr<Function<StrSet> > sanity_expr(new Constant<StrSet>(sanity)); Regex r(sanity_expr, "Word"); BOOST_CHECK_EQUAL("regex([\"word\"], \"Word\")", r.to_string(tagset)); } BOOST_AUTO_TEST_CASE(regex_to_raw_string) { StrSet sanity; sanity.insert("word"); boost::shared_ptr<Function<StrSet> > sanity_expr(new Constant<StrSet>(sanity)); Regex r(sanity_expr, "Word"); BOOST_CHECK_EQUAL("regex([\"word\"], \"Word\")", r.to_raw_string()); } BOOST_AUTO_TEST_SUITE_END()