#![cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use kcan::{
ActuatorConfig, ActuatorFeedback, ActuatorHealth, ActuatorMetric, ActuatorProtocol,
ActuatorSnapshot, CanId, ControlMode, DirectCommand, FaultCode, FeedbackMessageConfig,
HelperPolicy, KnottDynamicsFault, KnottDynamicsFaults, KnottDynamicsFeedback,
KnottDynamicsFeedbackKind, KnottDynamicsFlashCommand, KnottDynamicsFunction, KnottDynamicsMode,
KnottDynamicsModel, KnottDynamicsParameter, KnottDynamicsParameterAccess,
KnottDynamicsParameterType, KnottDynamicsParameterValue, KnottDynamicsWriteRequirement,
MitCommand, MitHelperCommand, MotorConfig, MotorFeedback, MotorFeedbackUpdate, MotorModel,
OriginMode, Position32Feedback, RobStrideCommand, RobStrideFeedback, RobStrideFrameKind,
RobStrideMitCommand, RobStrideModel, RobStridePositionCommand, RobStrideRawCommand,
RobStrideSpeedCommand,
};
#[cfg(feature = "tui")]
use kcan::{CanMonitorCommand, TuiCommand, TuiControlIntent, TuiMode, TuiTarget};
#[test]
fn actuator_and_config_types_implement_serde() {
assert_serde::<CanId>();
assert_serde::<MotorConfig>();
assert_serde::<HelperPolicy>();
assert_serde::<ActuatorProtocol>();
assert_serde::<ActuatorConfig>();
assert_serde::<ActuatorFeedback>();
assert_serde::<ActuatorHealth>();
assert_serde::<ActuatorMetric>();
assert_serde::<ActuatorSnapshot>();
}
#[test]
fn cubemars_protocol_types_implement_serde() {
assert_serde::<MotorModel>();
assert_serde::<ControlMode>();
assert_serde::<DirectCommand>();
assert_serde::<FeedbackMessageConfig>();
assert_serde::<OriginMode>();
assert_serde::<MitCommand>();
assert_serde::<MitHelperCommand>();
assert_serde::<MotorFeedback>();
assert_serde::<MotorFeedbackUpdate>();
assert_serde::<Position32Feedback>();
assert_serde::<FaultCode>();
}
#[test]
fn robstride_protocol_types_implement_serde() {
assert_serde::<RobStrideModel>();
assert_serde::<RobStrideFrameKind>();
assert_serde::<RobStrideMitCommand>();
assert_serde::<RobStridePositionCommand>();
assert_serde::<RobStrideSpeedCommand>();
assert_serde::<RobStrideRawCommand>();
assert_serde::<RobStrideCommand>();
assert_serde::<RobStrideFeedback>();
}
#[test]
fn knott_dynamics_protocol_types_implement_serde() {
assert_serde::<KnottDynamicsModel>();
assert_serde::<KnottDynamicsFunction>();
assert_serde::<KnottDynamicsMode>();
assert_serde::<KnottDynamicsFault>();
assert_serde::<KnottDynamicsFaults>();
assert_serde::<KnottDynamicsParameterType>();
assert_serde::<KnottDynamicsParameterAccess>();
assert_serde::<KnottDynamicsParameter>();
assert_serde::<KnottDynamicsParameterValue>();
assert_serde::<KnottDynamicsWriteRequirement>();
assert_serde::<KnottDynamicsFlashCommand>();
assert_serde::<KnottDynamicsFeedbackKind>();
assert_serde::<KnottDynamicsFeedback>();
}
#[cfg(feature = "tui")]
#[test]
fn tui_intent_types_implement_serde() {
assert_serde::<TuiMode>();
assert_serde::<TuiTarget>();
assert_serde::<TuiCommand>();
assert_serde::<TuiControlIntent>();
assert_serde::<CanMonitorCommand>();
}
fn assert_serde<T>()
where
T: Serialize + for<'de> Deserialize<'de>,
{
}