У меня есть класс B
, который генерирует A
. Я знаю, что в определенной настройке, если я вызову его 3 раза, он сгенерирует конкретный экземпляр A
(expected_a
), но я не знаю, где в последовательности.
Я бы хотелнаписать код для юнит-теста, например:
A expected_a(...);
B b;
std::set<A> set_of_a{ b.nextA() , b.nextA(), b.nextA() };
EXPECT_TRUE(set_of_a.count(expected_a) == 1);
Но использование set
требует реализации A::operator<()
. operator<
может быть легко реализовано, НО тогда я пишу производственный код, чтобы выполнить тест, который я не люблю / не хочу делать.
Я пробовал с unordered_set
, который не требует operator<
но требует hash()
реализовано.
BTW A::operator=
уже внедрено в производство.
Я мог бы использовать vector
и выполнять итерацию, чтобы искать вручную, но это кажетсянемного неуклюже.
Как я могу элегантно написать этот тест, не прибегая к реализации специфических операторов теста?