Добавил:
itan_hunt
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab5 / unitTesting
.cpp#include "unitTesting.h"
TrialKMP::TrialKMP(pair<string, string> input, vector<lli> prefix, vector<lli> output): input(input),
prefix(prefix),
output(output) {}
TrialCyclicShift::TrialCyclicShift(pair<string, string> input, lli output): input(input),
output(output) {}
void UnitTestingLabKMP::setUp() {
prefixNotSimilarSuffix = new TrialKMP(make_pair("ab", "abrakadabra"), {0, 0}, {0, 7});
prefixSimilarSuffix = new TrialKMP(make_pair("ababa", "brabababaghabaajaababa"), {0, 0, 1, 2, 3}, {2, 4, 17});
patternEqualTemplate = new TrialKMP(make_pair("ababa", "ababa"), {0, 0, 1, 2, 3}, {0});
patternNotEntryTemplate = new TrialKMP(make_pair("ara", "ababa"), {0, 0, 1}, {});
onceCyclicShift = new TrialCyclicShift(make_pair("abcdef", "defabc"), 3);
manyCyclicShift = new TrialCyclicShift(make_pair("bababaa", "abababa"), 1);
notCyclicShift = new TrialCyclicShift(make_pair("ababa", "abcba"), -1);
}
void UnitTestingLabKMP::tearDown() {
delete prefixNotSimilarSuffix;
delete prefixSimilarSuffix;
delete patternEqualTemplate;
delete patternNotEntryTemplate;
delete onceCyclicShift;
delete manyCyclicShift;
delete notCyclicShift;
}
void UnitTestingLabKMP::testPrefixFunction() {
CPPUNIT_ASSERT(prefixFunction(prefixNotSimilarSuffix->input.first) == prefixNotSimilarSuffix->prefix);
CPPUNIT_ASSERT(prefixFunction(prefixSimilarSuffix->input.first) == prefixSimilarSuffix->prefix);
CPPUNIT_ASSERT(prefixFunction(patternEqualTemplate->input.first) == patternEqualTemplate->prefix);
CPPUNIT_ASSERT(prefixFunction(patternNotEntryTemplate->input.first) == patternNotEntryTemplate->prefix);
}
void UnitTestingLabKMP::testKMP() {
CPPUNIT_ASSERT(KMP(prefixNotSimilarSuffix->input.second,
prefixNotSimilarSuffix->input.first) == prefixNotSimilarSuffix->output);
CPPUNIT_ASSERT(KMP(prefixSimilarSuffix->input.second,
prefixSimilarSuffix->input.first) == prefixSimilarSuffix->output);
CPPUNIT_ASSERT(KMP(patternEqualTemplate->input.second,
patternEqualTemplate->input.first) == patternEqualTemplate->output);
CPPUNIT_ASSERT(KMP(patternNotEntryTemplate->input.second,
patternNotEntryTemplate->input.first) == patternNotEntryTemplate->output);
}
void UnitTestingLabKMP::testFindFirstCyclicShift() {
CPPUNIT_ASSERT(findFirstCyclicShift(onceCyclicShift->input.first,
onceCyclicShift->input.second) ==onceCyclicShift->output);
CPPUNIT_ASSERT(findFirstCyclicShift(manyCyclicShift->input.first,
manyCyclicShift->input.second) == manyCyclicShift->output);
CPPUNIT_ASSERT(findFirstCyclicShift(notCyclicShift->input.first,
notCyclicShift->input.second) == notCyclicShift->output);
}
CppUnit::Test* UnitTestingLabKMP::suite() {
CppUnit::TestSuite *suite = new CppUnit::TestSuite();
suite->addTest(new CppUnit::TestCaller<UnitTestingLabKMP>("testPrefixFunction",
&UnitTestingLabKMP::testPrefixFunction));
suite->addTest(new CppUnit::TestCaller<UnitTestingLabKMP>("testKMP",
&UnitTestingLabKMP::testKMP));
suite->addTest(new CppUnit::TestCaller<UnitTestingLabKMP>("testFindFirstCyclicShift",
&UnitTestingLabKMP::testFindFirstCyclicShift));
return suite;
}
void runUnitTestingLabKMP() {
CppUnit::TextUi::TestRunner runner;
runner.addTest(UnitTestingLabKMP::suite());
runner.run();
}