blob: 0ba1e2d2a3ecb16582367bb425b47145226c7641 [file] [log] [blame]
Austin Schuh812d0d12021-11-04 20:16:48 -07001// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
James Kuszmaulb13e13f2023-11-22 20:44:04 -08005#include <gtest/gtest.h>
Austin Schuh812d0d12021-11-04 20:16:48 -07006#include <hal/AnalogInput.h>
7#include <hal/Relay.h>
8#include <wpi/SmallVector.h>
9
10#include "CrossConnects.h"
11#include "LifetimeWrappers.h"
Austin Schuh812d0d12021-11-04 20:16:48 -070012
13using namespace hlt;
14
15class RelayAnalogTest : public ::testing::TestWithParam<std::pair<int, int>> {};
16
17TEST_P(RelayAnalogTest, RelayAnalogCross) {
18 auto param = GetParam();
19
20 int32_t status = 0;
21 RelayHandle relay{param.first, true, &status};
22 ASSERT_EQ(0, status);
23 AnalogInputHandle analog{param.second, &status};
24 ASSERT_EQ(0, status);
25 AnalogTriggerHandle trigger{analog, &status};
26 ASSERT_EQ(0, status);
27 HAL_SetAnalogTriggerLimitsVoltage(trigger, 1.5, 3.0, &status);
28 ASSERT_EQ(0, status);
29
30 HAL_SetRelay(relay, false, &status);
31 ASSERT_EQ(0, status);
32 usleep(1000);
33 ASSERT_FALSE(HAL_GetAnalogTriggerTriggerState(trigger, &status));
34 ASSERT_EQ(0, status);
35
36 HAL_SetRelay(relay, true, &status);
37 ASSERT_EQ(0, status);
38 usleep(1000);
39 ASSERT_TRUE(HAL_GetAnalogTriggerTriggerState(trigger, &status));
40 ASSERT_EQ(0, status);
41
42 HAL_SetRelay(relay, false, &status);
43 ASSERT_EQ(0, status);
44 usleep(1000);
45 ASSERT_FALSE(HAL_GetAnalogTriggerTriggerState(trigger, &status));
46 ASSERT_EQ(0, status);
47}
48
49INSTANTIATE_TEST_SUITE_P(RelayAnalogCrossConnectsTests, RelayAnalogTest,
50 ::testing::ValuesIn(RelayAnalogCrossConnects));