Как отслеживать изменения в mock объектах в google test?
// Простая структура, которая хранит координаты.
struct point {
int x;
int y;
int z;
};
// Структура, которая хранит множество вершин.
struct mesh {
point& get_vertex(const size_t n) {
return m_vertices[n];
}
std::vector<point> m_vertices;
};
Иногда я пишу функцию, которая делает вещи, которые требуют хранить много данных,
например следующая функция изменяет координату y у вершины номер a и у вершины номер a + 100.
То есть мне нужно хранить минимум 101 вершину.
template<class Mesh>
void replace(Mesh& m, int a) {
m.get_vertex(a).y = 0;
m.get_vertex(a + 100).y = 0;
}
Чтобы не хранить большое количество вершин, можно создать mock-объект
struct mock_mesh {
MOCK_METHOD(point, get_vertex, (const size_t n), ());
};
Далее в определении теста я определяю, что возвращает функция get_vertex
TEST(Replace, Test1){
mock_mesh mesh;
EXPECT_CALL(mesh, get_vertex(1)).WillRepeatedly(Return(point{5, 2, 0}));
EXPECT_CALL(mesh, get_vertex(101)).WillRepeatedly(Return(point{1, 7, 2}));
// EXPECT_EQ(mesh.get_vertex(1), point{5, 0, 0});
// EXPECT_EQ(mesh.get_vertex(101), point{1, 0, 2});
replace(mesh, 1);
}
Но как мне проверить, что значение изменилось? Получается, что мне все равно нужно хранить хотя бы две координаты в экземпляре mock_mesh и возвращать ссылку на эти координаты?