Squashed 'third_party/allwpilib_2017/' content from commit 35ac87d
Change-Id: I7bb6f5556c30d3f5a092e68de0be9c710c60c9f4
git-subtree-dir: third_party/allwpilib_2017
git-subtree-split: 35ac87d6ff8b7f061c4f18c9ea316e5dccd4888a
diff --git a/wpilibcIntegrationTests/src/RelayTest.cpp b/wpilibcIntegrationTests/src/RelayTest.cpp
new file mode 100644
index 0000000..81a7c14
--- /dev/null
+++ b/wpilibcIntegrationTests/src/RelayTest.cpp
@@ -0,0 +1,68 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2014-2017. 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 "Relay.h" // NOLINT(build/include_order)
+
+#include "DigitalInput.h"
+#include "TestBench.h"
+#include "Timer.h"
+#include "gtest/gtest.h"
+
+using namespace frc;
+
+static const double kDelayTime = 0.01;
+
+class RelayTest : public testing::Test {
+ protected:
+ Relay* m_relay;
+ DigitalInput* m_forward;
+ DigitalInput* m_reverse;
+
+ void SetUp() override {
+ m_relay = new Relay(TestBench::kRelayChannel);
+ m_forward = new DigitalInput(TestBench::kFakeRelayForward);
+ m_reverse = new DigitalInput(TestBench::kFakeRelayReverse);
+ }
+
+ void TearDown() override {
+ delete m_relay;
+ delete m_forward;
+ delete m_reverse;
+ }
+
+ void Reset() { m_relay->Set(Relay::kOff); }
+};
+/**
+ * Test the relay by setting it forward, reverse, off, and on.
+ */
+TEST_F(RelayTest, Relay) {
+ Reset();
+
+ // set the relay to forward
+ m_relay->Set(Relay::kForward);
+ Wait(kDelayTime);
+ EXPECT_TRUE(m_forward->Get()) << "Relay did not set forward";
+ EXPECT_FALSE(m_reverse->Get()) << "Relay did not set forward";
+
+ // set the relay to reverse
+ m_relay->Set(Relay::kReverse);
+ Wait(kDelayTime);
+ EXPECT_TRUE(m_reverse->Get()) << "Relay did not set reverse";
+ EXPECT_FALSE(m_forward->Get()) << "Relay did not set reverse";
+
+ // set the relay to off
+ m_relay->Set(Relay::kOff);
+ Wait(kDelayTime);
+ EXPECT_FALSE(m_forward->Get()) << "Relay did not set off";
+ EXPECT_FALSE(m_reverse->Get()) << "Relay did not set off";
+
+ // set the relay to on
+ m_relay->Set(Relay::kOn);
+ Wait(kDelayTime);
+ EXPECT_TRUE(m_forward->Get()) << "Relay did not set on";
+ EXPECT_TRUE(m_reverse->Get()) << "Relay did not set on";
+}