Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab6 / unitTesting

.cpp
Скачиваний:
5
Добавлен:
05.02.2020
Размер:
3.21 Кб
Скачать
#include "unitTesting.h"

TrialAhoCorasick::TrialAhoCorasick(pair<string,set<string>> input, map<string, set<lli>> output): input(input), output(output) {}

TrialJoker::TrialJoker(pair<string, string> input, set<lli> output): input(input), output(output) {}

void UnitTestingLabAhoCorasick::setUp() {
	patternsNotEntryText = new TrialAhoCorasick(make_pair("abrakadabra", set<string>{"aba", "gra", "ar"}), {});
	patternsIntersectEachOtherEntryText = new TrialAhoCorasick(make_pair("abrakadabra", set<string>{"brak", "raka"}), {{"brak", {2}}, {"raka", {3}}});
	patternsNotIntersectEachOtherEntryText = new TrialAhoCorasick(make_pair("abrakadabra", set<string>{"br", "kad"}), {{"br", {2, 9}}, {"kad", {5}}});
	patternsIncludedEachOtherEntryText = new TrialAhoCorasick(make_pair("abrakadabra", set<string>{"brakada", "rakada", "ada"}), {{"brakada", {2}}, {"rakada", {3}}, {"ada", {6}}});

	templateWithoutJokerEntryText = new TrialJoker(make_pair("abrakadabra", "brak"), {2});
	templateNotEntryText = new TrialJoker(make_pair("abrakadabra", "k?dobra"), {});
	subPatternRepeatsInTemplateEntryText = new TrialJoker(make_pair("abrakadabra", "ab?????abr"), {1});
	templateWithManySingleJokersEntryText = new TrialJoker(make_pair("abarakadabra", "a?a?a?"), {1, 3, 5});
}

void UnitTestingLabAhoCorasick::tearDown() {
	delete patternsNotEntryText;
	delete patternsIntersectEachOtherEntryText;
	delete patternsNotIntersectEachOtherEntryText;
	delete patternsIncludedEachOtherEntryText;

	delete templateWithoutJokerEntryText;
	delete templateNotEntryText;
	delete subPatternRepeatsInTemplateEntryText;
	delete templateWithManySingleJokersEntryText;
}

void UnitTestingLabAhoCorasick::testAhoCorasick() {
	Trie trie1(patternsNotEntryText->input.second),
		 trie2(patternsIntersectEachOtherEntryText->input.second),
		 trie3(patternsNotIntersectEachOtherEntryText->input.second),
		 trie4(patternsIncludedEachOtherEntryText->input.second);
	
	CPPUNIT_ASSERT(AHO_CORASICK_TEST(patternsNotEntryText, trie1));
	CPPUNIT_ASSERT(AHO_CORASICK_TEST(patternsIntersectEachOtherEntryText, trie2));
	CPPUNIT_ASSERT(AHO_CORASICK_TEST(patternsNotIntersectEachOtherEntryText, trie3));
	CPPUNIT_ASSERT(AHO_CORASICK_TEST(patternsIncludedEachOtherEntryText, trie4));
}

void UnitTestingLabAhoCorasick::testAhoCorasickWithJoker() {
	CPPUNIT_ASSERT(AHO_CORASICK_WITH_JOKER_TEST(templateWithoutJokerEntryText));
	CPPUNIT_ASSERT(AHO_CORASICK_WITH_JOKER_TEST(templateNotEntryText));
	CPPUNIT_ASSERT(AHO_CORASICK_WITH_JOKER_TEST(subPatternRepeatsInTemplateEntryText));
	CPPUNIT_ASSERT(AHO_CORASICK_WITH_JOKER_TEST(templateWithManySingleJokersEntryText));
}

CppUnit::Test* UnitTestingLabAhoCorasick::suite() {
	CppUnit::TestSuite *suite = new CppUnit::TestSuite();

	suite->addTest(new CppUnit::TestCaller<UnitTestingLabAhoCorasick>("testAhoCorasick",
														   &UnitTestingLabAhoCorasick::testAhoCorasick));
	suite->addTest(new CppUnit::TestCaller<UnitTestingLabAhoCorasick>("testAhoCorasickWithJoker",
														   &UnitTestingLabAhoCorasick::testAhoCorasickWithJoker));
	return suite;
}

void runUnitTestingLabAhoCorasick() {
	CppUnit::TextUi::TestRunner runner;
	runner.addTest(UnitTestingLabAhoCorasick::suite());
	runner.run();
}
Соседние файлы в папке lab6