1#ifndef STEERING_SYSTEM_TEST
2#define STEERING_SYSTEM_TEST
3#include <gtest/gtest.h>
4#include <gmock/gmock.h>
7#define PRIMARY_ALPHA (0.7)
8#define SECONDARY_ALPHA (0.7)
9#define WARN_DIVERGENCE_OFFSET (0.6)
10#define ERR_DIVERGENCE_OFFSET (0.7)
11#define WARN_FILTER_LATENCY (8)
12#define ERR_FILTER_LATENCY (9)
14TEST(SteeringSystemTesting, test_steering_nominal)
16 float angles_to_test[5] = {-120.0f, -60.0f, 0.0f, 60.0f, 120.0f};
27 for (
float angle: angles_to_test)
35 .secondaryConversion = (AnalogConversion_s)
39 .status = AnalogSensorStatus_e::ANALOG_SENSOR_GOOD
49TEST(SteeringSystemTesting, test_steering_primary_is_marginal)
67 .secondaryConversion = (AnalogConversion_s)
71 .status = AnalogSensorStatus_e::ANALOG_SENSOR_GOOD
79TEST(SteeringSystemTesting, test_steering_secondary_is_marginal)
97 .secondaryConversion = (AnalogConversion_s)
101 .status = AnalogSensorStatus_e::ANALOG_SENSOR_CLAMPED
109TEST(SteeringSystemTesting, test_steering_divergence_warning)
119 float mockPrimaryFilteredAngle;
120 float mockSecondaryFilteredAngle;
122 float primaryAngle = 0.0f;
135 mockPrimaryFilteredAngle = mockAngleFilters[0].
filtered_result(primaryAngle);
136 mockSecondaryFilteredAngle = mockAngleFilters[1].
filtered_result(secondaryAngle);
144 .secondaryConversion = (AnalogConversion_s)
147 .conversion = secondaryAngle,
148 .status = AnalogSensorStatus_e::ANALOG_SENSOR_GOOD
158TEST(SteeringSystemTesting, test_steering_divergence_error)
168 float mockPrimaryFilteredAngle;
169 float mockSecondaryFilteredAngle;
171 float primaryAngle = 0.0f;
184 mockPrimaryFilteredAngle = mockAngleFilters[0].
filtered_result(primaryAngle);
185 mockSecondaryFilteredAngle = mockAngleFilters[1].
filtered_result(secondaryAngle);
193 .secondaryConversion = (AnalogConversion_s)
196 .conversion = secondaryAngle,
197 .status = AnalogSensorStatus_e::ANALOG_SENSOR_GOOD
207TEST(SteeringSystemTesting, test_steering_primary_is_missing)
217 float angle = 100.0f;
225 .secondaryConversion = (AnalogConversion_s)
229 .status = AnalogSensorStatus_e::ANALOG_SENSOR_GOOD
237TEST(SteeringSystemTesting, test_steering_primary_is_missing_and_secondary_is_marginal)
245 float angle = 100.0f;
253 .secondaryConversion = (AnalogConversion_s)
257 .status = AnalogSensorStatus_e::ANALOG_SENSOR_CLAMPED
@ STEERING_SYSTEM_MARGINAL
@ STEERING_SYSTEM_NOMINAL
@ STEERING_SYSTEM_DEGRADED
@ STEERING_ENCODER_MARGINAL
@ STEERING_ENCODER_NOMINAL
#define STEERING_DIVERGENCE_ERROR_THRESHOLD
#define STEERING_DIVERGENCE_WARN_THRESHOLD
dataType filtered_result(dataType new_val)
SteeringEncoderConversion_s mockConversion
const SteeringSystemData_s & getSteeringSystemData()
Get a reference to the steering system's data.
void tick(const SteeringSystemTick_s &intake)
Computes steering angle and status of the steering system.
#define WARN_DIVERGENCE_OFFSET
#define WARN_FILTER_LATENCY
#define ERR_FILTER_LATENCY
TEST(SteeringSystemTesting, test_steering_nominal)
#define ERR_DIVERGENCE_OFFSET
SteeringEncoderStatus_e status
SteeringSystemStatus_e status