Как отслеживать изменения в 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 и возвращать ссылку на эти координаты?


Ответы (0 шт):