Как проверить значения итератора с помощью Google Test Case? - PullRequest
0 голосов
/ 28 сентября 2018

Мне нужно протестировать каждое значение доступа итератора с фактическим значением, вставленным с помощью теста Google, ниже приведен мой фрагмент кода.

TEST(EVTValSortedVector,  StdIteratorAccess1)
{
EVTValSortedVector<Dog> eTerriers;

eTerriers.insert(Dog("Cairn Terrier",4));
eTerriers.insert(Dog("Irish Terrier",3));
eTerriers.insert(Dog("Schnauzer",3));

EVTValSortedVector<Dog>::iterator i;
for (i = eTerriers.begin(); i != eTerriers.end() ; i++ ) {
//  EXPECT_EQ((i), "Cairn Terrier"); // Here i need to check each iterator 
                                      //value with actual value inserted(here i wrote sample for only one element)
}
}

Выше в закомментированной строке мне нужно протестировать каждое вставленное значение с помощью значения итератора,Я новичок в этом тестовом случае Google, пожалуйста, помогите мне решить эту проблему.

Я обновил свой код в соответствии с предложением "Caleth", я получаю сообщение об ошибке, я новичок в этом тесте Google, пожалуйстапредложить, это мой обновленный код

TEST(EVTValSortedVector,  StdIteratorAccess1)
{
EVTValSortedVector<Dog> eTerriers;

eTerriers.insert(Dog("Cairn Terrier",4));
eTerriers.insert(Dog("Irish Terrier",3));
eTerriers.insert(Dog("Schnauzer",3));

EXPECT_EQ(eTerriers[0], "Cairn Terrier");
EXPECT_EQ(eTerriers[1], "Irish Terrier");
EXPECT_EQ(eTerriers[2], "Schnauzer");
}

Я получаю ниже ошибку для этого, пожалуйста, предложите.

testEVTValSortedVector.cpp: 193: ошибка: нет совпадения с 'operator []' в'eTerriers [0]' testEVTValSortedVector.cpp: 193: ошибка: аргумент шаблона 1 недопустимнет соответствия для 'operator []' в 'eTerriers [1]' testEVTValSortedVector.cpp: 195: ошибка: нет соответствия для 'operator []' в 'eTerriers [2]' testEVTValSortedVector.cpp: 195: ошибка: нет соответствия для 'оператор[] 'in' eTerriers [2] '

1 Ответ

0 голосов
/ 28 сентября 2018

Любой цикл, который вы напишите, будет выполнен для всех случаев.Не пишите цикл.

EXPECT_EQ(eTerriers[0], "Cairn Terrier");
EXPECT_EQ(eTerriers[1], "Irish Terrier");
EXPECT_EQ(eTerriers[2], "Schnauzer");

Обратите внимание, что этот тест на самом деле не говорит вам, что EVTValSortedVector поддерживает отсортированный порядок, вы начали с отсортированного ввода.

Лучшим тестом будет поиск соседних элементов, чтобы определить, есть ли в списке элемент, который является >= более поздним элементом.

// If we find no adjacent pair of elements `elemN, elemM` such that `elemN >= elemM`, then the list is in ascending order
EXPECT_EQ(std::adjacent_find(eTerriers.begin(), eTerriers.end(), std::greater_eq<Dog>{}), eTerriers.end());

Этот тест eTerriers беззная что-нибудь о данных, с которых вы начинаете, это означает, что они могут быть сгенерированы как часть настройки теста.Это своего рода тест на основе свойств

...