#include #include #include #include namespace { using namespace testing; using namespace Misc; struct ReportMock { MOCK_METHOD(void, call, (std::size_t, std::size_t), ()); }; struct Report { StrictMock* mImpl; void operator()(std::size_t provided, std::size_t expected) { mImpl->call(provided, expected); } }; TEST(MiscProgressReporterTest, shouldCallReportWhenPassedInterval) { StrictMock report; EXPECT_CALL(report, call(13, 42)).WillOnce(Return()); ProgressReporter reporter(std::chrono::steady_clock::duration(0), Report{ &report }); reporter(13, 42); } TEST(MiscProgressReporterTest, shouldNotCallReportWhenIntervalIsNotPassed) { StrictMock report; EXPECT_CALL(report, call(13, 42)).Times(0); ProgressReporter reporter(std::chrono::seconds(1000), Report{ &report }); reporter(13, 42); } }