#include "fake_probe.h"
#include <gtest/gtest.h>
namespace
{
using namespace std::chrono_literals;
TEST(FakeProbe, ReturnsConfiguredResult)
{
for(auto status : {ProbeStatus::GOOD, ProbeStatus::BAD, ProbeStatus::OTHER})
{
const ProbeResult configured{status, 123, 456};
FakeProbe fake(configured, 0ms);
ProbeInterface& probe = fake;
auto result = probe.probe();
ASSERT_TRUE(result);
EXPECT_EQ(result->status, status);
EXPECT_EQ(result->timestamp, configured.timestamp);
EXPECT_EQ(result->duration_microsecond, configured.duration_microsecond);
}
}
TEST(FakeProbe, DelaysWithoutChangingResult)
{
const ProbeResult configured{ProbeStatus::BAD, 123, 456};
FakeProbe probe(configured, 20ms);
const auto start = std::chrono::steady_clock::now();
auto result = probe.probe();
const auto elapsed = std::chrono::steady_clock::now() - start;
ASSERT_TRUE(result);
EXPECT_EQ(result->status, configured.status);
EXPECT_GE(elapsed, 20ms);
EXPECT_EQ(result->timestamp, configured.timestamp);
EXPECT_EQ(result->duration_microsecond, configured.duration_microsecond);
}
}