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

lab6 / unit_testing

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

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

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

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

	templateWithoutJokerEntryText = new TrialJoker(make_pair(L"abrakadabra", L"brak"), {2});
	templateNotEntryText = new TrialJoker(make_pair(L"abrakadabra", L"k?dobra"), {});
	subPatternRepeatsInTemplateEntryText = new TrialJoker(make_pair(L"abrakadabra", L"ab?????abr"), {1});
	templateWithManySingleJokersEntryText = new TrialJoker(make_pair(L"abarakadabra", L"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