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

lab5 / unitTesting

.cpp
Скачиваний:
0
Добавлен:
05.02.2020
Размер:
3.44 Кб
Скачать
#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();
}
Соседние файлы в папке lab5