У меня есть этот фрагмент кода, который подсчитывает количество случаев, когда фраза существует в текстовом файле.Когда я вызываю это из функции main (), она работает как положено.
Когда я пытаюсь написать для него модульный тест, он не открывается после открытия файла, возвращая -1 (см. Код ниже).
Вот код для моей функции countInstances:
int countInstances(string phrase, string filename) {
ifstream file;
file.open(filename);
if (file.is_open) {
stringstream buffer;
buffer << file.rdbuf();
file.close();
string contents = buffer.str();
int fileLength = contents.length();
int phraseLength = phrase.length();
int instances = 0;
// Goes through entire contents
for(int i = 0; i < fileLength - phraseLength; i++){
int j;
// Now checks to see if the phrase is in contents
for (j = 0; j < phraseLength; j++) {
if (contents[i + j] != phrase[j])
break;
}
// Checks to see if the entire phrase existed
if (j == phraseLength) {
instances++;
j = 0;
}
}
return instances;
}
else {
return -1;
}
}
Мой модульный тест выглядит следующим образом:
namespace Tests
{
TEST_CLASS(UnitTests)
{
public:
TEST_METHOD(CountInstances) {
/*
countInstances(string, string) :
countInstances should simply check the amount of times that
the passed phrase / word appears within the given filename
*/
int expected = 3;
int actual = countInstances("word", "../smudger/test.txt");
Assert::AreEqual(expected, actual);
}
};
}
Для теста CountInstance я получаю следующее сообщение:
Сообщение: Ошибка подтверждения.Ожидаемый: <3> Фактический: <- 1>
Любые идеи о том, откуда возникла моя проблема и как я мог бы ее решить?Спасибо.