From fcf19b28860ae7b370b2b92b7b0abeea8f9a3ac1 Mon Sep 17 00:00:00 2001
From: ilor <kailoran@gmail.com>
Date: Thu, 12 May 2011 13:48:32 +0200
Subject: [PATCH] Use WCCLFile parsing in data-droven tag rule and match rule
 tests

---
 tests/datarule.cpp                            | 22 ++++++-------------
 tests/rules-data/match/head/cclmatch1.ccl     |  2 ++
 tests/rules-data/match/is/cclmatch-is1.ccl    |  2 ++
 tests/rules-data/match/michal/cclmatch1.ccl   |  2 ++
 tests/rules-data/match/michal/cclmatch2.ccl   |  2 ++
 tests/rules-data/match/michal/cclmatch3.ccl   |  2 ++
 tests/rules-data/match/postcond/cclmatch1.ccl |  2 ++
 tests/rules-data/match/postcond/cclmatch2.ccl |  2 ++
 .../match/postcond2/cclmatch-none.ccl         |  2 ++
 .../rules-data/match/postcond2/cclmatch2.ccl  |  2 ++
 .../rules-data/match/postcond2/cclmatch3.ccl  |  2 ++
 .../rules-data/match/postcond2/cclmatch4.ccl  |  2 ++
 .../rules-data/match/postcond2/cclmatch5.ccl  |  2 ++
 .../rules-data/match/postcond3/cclmatch1.ccl  |  2 ++
 .../rules-data/match/postcond3/cclmatch2.ccl  |  2 ++
 tests/rules-data/match/repeat/cclmatch3.ccl   |  2 ++
 tests/rules-data/match/repeat/cclmatch4.ccl   |  2 ++
 .../rules-data/match/single_tok/cclmatch1.ccl |  2 ++
 tests/rules-data/match/text/cclmatch1.ccl     |  2 ++
 tests/rules-data/match/text/cclmatch2.ccl     |  2 ++
 tests/rules-data/match/unmark/cclmatch1.ccl   |  2 ++
 tests/rules-data/match/unmark/cclmatch2.ccl   |  2 ++
 tests/rules-data/match/variants/cclmatch1.ccl |  2 ++
 tests/rules-data/match/variants/cclmatch2.ccl |  2 ++
 24 files changed, 53 insertions(+), 15 deletions(-)

diff --git a/tests/datarule.cpp b/tests/datarule.cpp
index 281d913..a768770 100644
--- a/tests/datarule.cpp
+++ b/tests/datarule.cpp
@@ -165,29 +165,21 @@ void test_one_rule_item_actual(const rule_compare_test& c)
 	std::ifstream is(rf.c_str());
 	BOOST_REQUIRE(is.good());
 
+	boost::shared_ptr<Wccl::WcclFile> parsed;
+	parsed = parser.parseWcclFile(is, LIBWCCL_TEST_DATA_DIR);
 
-	boost::shared_ptr<Wccl::TagRuleSequence> rules;
-	boost::shared_ptr<Wccl::MatchRule> matchr;
-
-	std::string fn = c.rule_file.filename();
-	if (fn.find("match") == fn.npos) {
-		rules = parser.parseTagRuleSequence(is);
-	} else {
-		matchr = parser.parseMatchRule(is);
-	}
 	for (size_t i = 0; i < chunk->sentences().size(); ++i) {
 		Corpus2::Sentence::Ptr sentence = chunk->sentences()[i]->clone_shared();
 		Corpus2::Sentence::Ptr expected_sentence = expected->sentences()[i];
 		BOOST_REQUIRE_EQUAL(sentence->size(), expected_sentence->size());
-		if (rules) {
-			rules->execute_once(sentence);
-		} else if (matchr) {
+		if (parsed->has_tag_rules()) {
+			parsed->get_tag_rules_ptr()->execute_once(sentence);
+		}
+		if (parsed->has_match_rules()) {
 			boost::shared_ptr<Corpus2::AnnotatedSentence> annotated;
 			annotated = boost::dynamic_pointer_cast<Corpus2::AnnotatedSentence>(sentence);
 			BOOST_REQUIRE(annotated);
-			matchr->apply(annotated);
-		} else {
-			BOOST_ERROR("Dark forces");
+			parsed->get_match_rules_ptr()->apply_all(annotated);
 		}
 		check_sentences(i, tagset, sentence, expected_sentence);
 	}
diff --git a/tests/rules-data/match/head/cclmatch1.ccl b/tests/rules-data/match/head/cclmatch1.ccl
index 7c7aa47..1a2448b 100644
--- a/tests/rules-data/match/head/cclmatch1.ccl
+++ b/tests/rules-data/match/head/cclmatch1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply
 (
   match
@@ -11,3 +12,4 @@ apply
     mark(M, M, :2, "NP")
   )
 )
+)
diff --git a/tests/rules-data/match/is/cclmatch-is1.ccl b/tests/rules-data/match/is/cclmatch-is1.ccl
index d8fb4b1..105520d 100644
--- a/tests/rules-data/match/is/cclmatch-is1.ccl
+++ b/tests/rules-data/match/is/cclmatch-is1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     is('N_NOM')
@@ -6,3 +7,4 @@ apply(
     mark(M, 'COPY')
   )
 )
+)
diff --git a/tests/rules-data/match/michal/cclmatch1.ccl b/tests/rules-data/match/michal/cclmatch1.ccl
index d2ea62b..4484d66 100644
--- a/tests/rules-data/match/michal/cclmatch1.ccl
+++ b/tests/rules-data/match/michal/cclmatch1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     regex( base[0], 'wyżyna' ),
@@ -14,3 +15,4 @@ apply(
   )
 )
 
+)
diff --git a/tests/rules-data/match/michal/cclmatch2.ccl b/tests/rules-data/match/michal/cclmatch2.ccl
index b02d73f..6734330 100644
--- a/tests/rules-data/match/michal/cclmatch2.ccl
+++ b/tests/rules-data/match/michal/cclmatch2.ccl
@@ -1,3 +1,4 @@
+match_rules(
 
 
 apply(
@@ -13,3 +14,4 @@ apply(
   )
 )
 
+)
diff --git a/tests/rules-data/match/michal/cclmatch3.ccl b/tests/rules-data/match/michal/cclmatch3.ccl
index 817f1b5..981f6d4 100644
--- a/tests/rules-data/match/michal/cclmatch3.ccl
+++ b/tests/rules-data/match/michal/cclmatch3.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     is( 'city_trigger' ),
@@ -10,3 +11,4 @@ apply(
     mark(:2, 'CITY_NAM')
   )
 )
+)
diff --git a/tests/rules-data/match/postcond/cclmatch1.ccl b/tests/rules-data/match/postcond/cclmatch1.ccl
index 0e56753..c79419d 100644
--- a/tests/rules-data/match/postcond/cclmatch1.ccl
+++ b/tests/rules-data/match/postcond/cclmatch1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     inter( base[0], 'wyżyna' ),
@@ -12,3 +13,4 @@ apply(
     mark(:2, 'Highland')
   )
 )
+)
diff --git a/tests/rules-data/match/postcond/cclmatch2.ccl b/tests/rules-data/match/postcond/cclmatch2.ccl
index 3f2b455..49d4619 100644
--- a/tests/rules-data/match/postcond/cclmatch2.ccl
+++ b/tests/rules-data/match/postcond/cclmatch2.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     inter( base[0], 'wyżyna' ),
@@ -12,3 +13,4 @@ apply(
     mark(:2, 'Highland')
   )
 )
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch-none.ccl b/tests/rules-data/match/postcond2/cclmatch-none.ccl
index 594b822..0f40aee 100644
--- a/tests/rules-data/match/postcond2/cclmatch-none.ccl
+++ b/tests/rules-data/match/postcond2/cclmatch-none.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     is("A")
@@ -9,3 +10,4 @@ apply(
     mark(M, "C")
   )
 )
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch2.ccl b/tests/rules-data/match/postcond2/cclmatch2.ccl
index 75f7fb4..5bffeca 100644
--- a/tests/rules-data/match/postcond2/cclmatch2.ccl
+++ b/tests/rules-data/match/postcond2/cclmatch2.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     is("B")
@@ -9,3 +10,4 @@ apply(
     mark(M, "C")
   )
 )
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch3.ccl b/tests/rules-data/match/postcond2/cclmatch3.ccl
index d9c9f33..3be90c9 100644
--- a/tests/rules-data/match/postcond2/cclmatch3.ccl
+++ b/tests/rules-data/match/postcond2/cclmatch3.ccl
@@ -1,5 +1,7 @@
+match_rules(
 apply(
   match(repeat(equal(class[0], adj))),
   cond(ann(M, "B")),
   actions(mark(M,"C"))
 )
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch4.ccl b/tests/rules-data/match/postcond2/cclmatch4.ccl
index 6e68f17..f0f132b 100644
--- a/tests/rules-data/match/postcond2/cclmatch4.ccl
+++ b/tests/rules-data/match/postcond2/cclmatch4.ccl
@@ -1,5 +1,7 @@
+match_rules(
 apply(
   match(repeat(equal(class[0], adj))),
   cond(annsub(M, "B")),
   actions(mark(M,"C"))
 )
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch5.ccl b/tests/rules-data/match/postcond2/cclmatch5.ccl
index 51ff9f0..03b1f33 100644
--- a/tests/rules-data/match/postcond2/cclmatch5.ccl
+++ b/tests/rules-data/match/postcond2/cclmatch5.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     repeat(
@@ -12,3 +13,4 @@ apply(
   //cond(debug(orth[first(M)])),
   actions(mark(M,"C"))
 )
+)
diff --git a/tests/rules-data/match/postcond3/cclmatch1.ccl b/tests/rules-data/match/postcond3/cclmatch1.ccl
index e69473a..02d9939 100644
--- a/tests/rules-data/match/postcond3/cclmatch1.ccl
+++ b/tests/rules-data/match/postcond3/cclmatch1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     optional(repeat(inter(class[0], {adj}))),
@@ -10,3 +11,4 @@ apply(
     mark(M, "NP")
   )
 )
+)
diff --git a/tests/rules-data/match/postcond3/cclmatch2.ccl b/tests/rules-data/match/postcond3/cclmatch2.ccl
index d8d9560..7e4251c 100644
--- a/tests/rules-data/match/postcond3/cclmatch2.ccl
+++ b/tests/rules-data/match/postcond3/cclmatch2.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     optional(repeat(inter(class[0], {adj}))),
@@ -10,3 +11,4 @@ apply(
     mark(M, "NP")
   )
 )
+)
diff --git a/tests/rules-data/match/repeat/cclmatch3.ccl b/tests/rules-data/match/repeat/cclmatch3.ccl
index 81cf3c6..64479cf 100644
--- a/tests/rules-data/match/repeat/cclmatch3.ccl
+++ b/tests/rules-data/match/repeat/cclmatch3.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     optional(repeat(inter(class[0], {adj, pact, ppas}))),
@@ -7,3 +8,4 @@ apply(
     mark(M, 'NP')
   )
 )
+)
diff --git a/tests/rules-data/match/repeat/cclmatch4.ccl b/tests/rules-data/match/repeat/cclmatch4.ccl
index 68a50fa..908fe7a 100644
--- a/tests/rules-data/match/repeat/cclmatch4.ccl
+++ b/tests/rules-data/match/repeat/cclmatch4.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     repeat(
@@ -10,3 +11,4 @@ apply(
     mark(M, 'MultiNP')
   )
 )
+)
diff --git a/tests/rules-data/match/single_tok/cclmatch1.ccl b/tests/rules-data/match/single_tok/cclmatch1.ccl
index 0ee1075..30cf289 100644
--- a/tests/rules-data/match/single_tok/cclmatch1.ccl
+++ b/tests/rules-data/match/single_tok/cclmatch1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     and( inter(class[0], {subst, ger, depr}), inter(cas[0], {nom}) )
@@ -6,3 +7,4 @@ apply(
     mark($m:_M, 'N_NOM')
   )
 )
+)
diff --git a/tests/rules-data/match/text/cclmatch1.ccl b/tests/rules-data/match/text/cclmatch1.ccl
index 9b1ed19..11b2601 100644
--- a/tests/rules-data/match/text/cclmatch1.ccl
+++ b/tests/rules-data/match/text/cclmatch1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     text("Sp. z o.o.")
@@ -6,3 +7,4 @@ apply(
     mark(M, "Co")
   )
 )
+)
diff --git a/tests/rules-data/match/text/cclmatch2.ccl b/tests/rules-data/match/text/cclmatch2.ccl
index 96885ff..efd2764 100644
--- a/tests/rules-data/match/text/cclmatch2.ccl
+++ b/tests/rules-data/match/text/cclmatch2.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     text("Sp."),
@@ -10,3 +11,4 @@ apply(
     mark(:3, "O")
   )
 )
+)
diff --git a/tests/rules-data/match/unmark/cclmatch1.ccl b/tests/rules-data/match/unmark/cclmatch1.ccl
index 445daca..46448bb 100644
--- a/tests/rules-data/match/unmark/cclmatch1.ccl
+++ b/tests/rules-data/match/unmark/cclmatch1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     optional(equal(class[0], other)),
@@ -7,3 +8,4 @@ apply(
     unmark(M, "A")
   )
 )
+)
diff --git a/tests/rules-data/match/unmark/cclmatch2.ccl b/tests/rules-data/match/unmark/cclmatch2.ccl
index c81f1a1..6261156 100644
--- a/tests/rules-data/match/unmark/cclmatch2.ccl
+++ b/tests/rules-data/match/unmark/cclmatch2.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     optional(equal(class[0], other)),
@@ -7,3 +8,4 @@ apply(
     unmark(M, "B")
   )
 )
+)
diff --git a/tests/rules-data/match/variants/cclmatch1.ccl b/tests/rules-data/match/variants/cclmatch1.ccl
index 5e4efc1..953c83f 100644
--- a/tests/rules-data/match/variants/cclmatch1.ccl
+++ b/tests/rules-data/match/variants/cclmatch1.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     longest(
@@ -16,3 +17,4 @@ apply(
   actions(mark(M, "C"))
 )
 
+)
diff --git a/tests/rules-data/match/variants/cclmatch2.ccl b/tests/rules-data/match/variants/cclmatch2.ccl
index bb5fdaa..ac9021d 100644
--- a/tests/rules-data/match/variants/cclmatch2.ccl
+++ b/tests/rules-data/match/variants/cclmatch2.ccl
@@ -1,3 +1,4 @@
+match_rules(
 apply(
   match(
     oneof(
@@ -16,3 +17,4 @@ apply(
   actions(mark(M, "C"))
 )
 
+)
-- 
GitLab