From f4d542b21201c9f4480b4f260534dc3f0fc451f1 Mon Sep 17 00:00:00 2001 From: Kacper Puczydlowski Date: Mon, 23 Jun 2014 11:18:27 -0400 Subject: [PATCH] Add FakeEncoderTest for C++ Change-Id: Ic030a1d055a03f5b245e19e6466af05e72dd7deb --- .../src/FakeEncoderTest.cpp | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 wpilibc/wpilibC++IntegrationTests/src/FakeEncoderTest.cpp diff --git a/wpilibc/wpilibC++IntegrationTests/src/FakeEncoderTest.cpp b/wpilibc/wpilibC++IntegrationTests/src/FakeEncoderTest.cpp new file mode 100644 index 0000000000..ac1b70456c --- /dev/null +++ b/wpilibc/wpilibC++IntegrationTests/src/FakeEncoderTest.cpp @@ -0,0 +1,59 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) FIRST 2014. 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 "WPILib.h" +#include "gtest/gtest.h" +#include "TestBench.h" + +static const double kDelayTime = 0.001; + +class FakeEncoderTest : public testing::Test { +protected: + Encoder *m_encoder; + DigitalOutput *m_outputA; + DigitalOutput *m_outputB; + + virtual void SetUp() { + m_outputA = new DigitalOutput(TestBench::kLoop2OutputChannel); + m_outputB = new DigitalOutput(TestBench::kLoop1OutputChannel); + m_encoder = new Encoder(TestBench::kLoop1InputChannel, TestBench::kLoop2InputChannel); + } + + virtual void TearDown() { + delete m_encoder; + delete m_outputA; + delete m_outputB; + } +}; + +/** + * Test the encoder by reseting it to 0 and reading the value. + */ +TEST_F(FakeEncoderTest, TestDefaultState) { + EXPECT_FLOAT_EQ(0.0f, m_encoder->Get()) + << "The encoder did not start at 0."; +} + +/** + * Test the encoder by setting the digital outputs and reading the value. + */ +TEST_F(FakeEncoderTest, TestCountUp) { + //Sets the outputs such that the encoder moves in the positive direction + for(int i = 0; i < 100; i++) { + m_outputA->Set(true); + Wait(kDelayTime); + m_outputB->Set(true); + Wait(kDelayTime); + m_outputA->Set(false); + Wait(kDelayTime); + m_outputB->Set(false); + Wait(kDelayTime); + } + + EXPECT_FLOAT_EQ(100.0f, m_encoder->Get()) + << "Encoder did not count to 100."; +}