#include "benchmark/benchmark_api.h"
#include "benchmark/state.h"
#include "gtest/gtest.h"

namespace benchmark {
namespace internal {

namespace {

class DummyBenchmark : public benchmark::Benchmark {
 public:
  DummyBenchmark() : Benchmark("dummy") {}
  void Run(State& /*state*/) override {}
};

TEST(DefaultTimeUnitTest, TimeUnitIsNotSet) {
  DummyBenchmark benchmark;
  EXPECT_EQ(benchmark.GetTimeUnit(), kNanosecond);
}

TEST(DefaultTimeUnitTest, DefaultIsSet) {
  DummyBenchmark benchmark;
  EXPECT_EQ(benchmark.GetTimeUnit(), kNanosecond);
  SetDefaultTimeUnit(kMillisecond);
  EXPECT_EQ(benchmark.GetTimeUnit(), kMillisecond);
}

TEST(DefaultTimeUnitTest, DefaultAndExplicitUnitIsSet) {
  DummyBenchmark benchmark;
  benchmark.Unit(kMillisecond);
  SetDefaultTimeUnit(kMicrosecond);

  EXPECT_EQ(benchmark.GetTimeUnit(), kMillisecond);
}

}  // namespace
}  // namespace internal
}  // namespace benchmark
