Добавил:
itan_hunt
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab6 / unit_testing
.cpp#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