Пишу тесты для Callback objects(Command pattern).
Мне нужно проверить, что два метода вызываются перед третим и передают в него ожидаемые значения.
Причем первые могут быть использованы в любом порядке.
Как пример: чтение двух значений -> вычисления -> возврат результата.
Сейчас я могу только жестко задать последовательность, хотя перестановка вызовов местами ошибкой не является.
Пример кода:
MockVM mockVm;
Sequence csr;
EXPECT_CALL(mockVm, get_control(csr_id, _))
.InSequence(csr)
.WillOnce(SetArgReferee<1>(csr_val));
EXPECT_CALL(mockVm, get_register(src))
.InSequence(csr)
.WillOnce(Return(src_val));
EXPECT_CALL(mockVm, set_control(csr_id, expected_csr_value))
.InSequence(csr);
impl->exec(&mockVm, &code);
Здесь
get_control и
get_register могут быть вызваны в любом порядке.
Как это можно описать в
gMock?
Как в
gMock проверить что метод
НЕ вызывается?