/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved.                        */
/* Open Source Software - may be modified and shared by FRC teams. The code   */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project.                                                               */
/*----------------------------------------------------------------------------*/

#include "frc/Timer.h"  // NOLINT(build/include_order)

#include "TestBench.h"
#include "gtest/gtest.h"

using namespace frc;

static const double kWaitTime = 0.5;

class TimerTest : public testing::Test {
 protected:
  Timer* m_timer;

  void SetUp() override { m_timer = new Timer; }

  void TearDown() override { delete m_timer; }

  void Reset() { m_timer->Reset(); }
};

/**
 * Test if the Wait function works
 */
TEST_F(TimerTest, Wait) {
  Reset();

  double initialTime = m_timer->GetFPGATimestamp();

  Wait(kWaitTime);

  double finalTime = m_timer->GetFPGATimestamp();

  EXPECT_NEAR(kWaitTime, finalTime - initialTime, 0.001);
}
