oxijolt 1.1.0+jolt-5.6.0

Safe Rust API for Jolt Physics
Documentation
//! The trait rules of `docs/api-guidelines.md` (R6, R7), checked at compile time: ids, errors,
//! settings and the settings with a `Default`. A type that loses a promised trait stops this file
//! from compiling.

use std::error::Error;
use std::fmt::Debug;
use std::hash::Hash;

use oxijolt::*;

fn id<T: Clone + Copy + Debug + PartialEq + Eq + PartialOrd + Ord + Hash>() {}
fn error<T: Clone + Copy + Debug + PartialEq + Eq + Error>() {}
fn settings<T: Clone + Debug + PartialEq>() {}
fn default<T: Default>() {}

#[test]
fn ids_compare_order_and_hash() {
    id::<BodyId>();
    id::<CharacterId>();
    id::<ConstraintId<HingeConstraint>>();
    id::<AnyConstraintId>();
    id::<VehicleId>();
    id::<VehicleId<TrackedVehicle>>();
    id::<AnyVehicleId>();
    id::<RagdollId>();
    id::<SubShapeId>();
}

#[test]
fn errors_are_copy_and_comparable() {
    error::<WorldError>();
    error::<ShapeError>();
    error::<BinaryStateError>();
    error::<ConvexHullError>();
    error::<MeshError>();
    error::<ThinTrianglesError>();
    error::<BodyError>();
    error::<StepError>();
    error::<QueryError>();
    error::<ContactSettingsError>();
    error::<CharacterError>();
    error::<VehicleError>();
    error::<RagdollError>();
    error::<ConstraintError>();
    error::<SoftBodyError>();
    error::<StateError>();
    error::<CollisionGroupError>();
    error::<oxijolt::error::Error>();
}

#[test]
fn settings_are_clone_and_comparable() {
    settings::<BodySettings>();
    settings::<BuoyancySettings>();
    settings::<ExtendedUpdateSettings>();
    settings::<CharacterContactSettings>();
    settings::<HeightFieldSettings>();
    settings::<SoftBodySettings>();
    settings::<EventSettings>();
    settings::<ContactSettings>();
    settings::<SoftBodyContactSettings>();
    settings::<PointConstraintSettings>();
    settings::<DistanceConstraintSettings>();
    settings::<FixedConstraintSettings>();
    settings::<HingeConstraintSettings>();
    settings::<SliderConstraintSettings>();
    settings::<ConeConstraintSettings>();
    settings::<SwingTwistConstraintSettings>();
    settings::<SixDofConstraintSettings>();
    settings::<PathConstraintSettings>();
    settings::<PulleyConstraintSettings>();
    settings::<GearConstraintSettings>();
    settings::<RackAndPinionConstraintSettings>();
    settings::<MotorSettings>();
    settings::<SpringSettings>();
    settings::<WheelSettings>();
    settings::<WheeledVehicleSettings>();
    settings::<VehicleEngineSettings>();
    settings::<VehicleTransmissionSettings>();
    settings::<VehicleDifferentialSettings>();
    settings::<MotorcycleSettings>();
    settings::<TrackedVehicleSettings>();
    settings::<TrackedWheelSettings>();
    settings::<VehicleTrackSettings>();
    #[cfg(feature = "debug-renderer")]
    settings::<DebugLineSettings>();
}

#[test]
fn settings_without_required_inputs_have_defaults() {
    default::<WorldSettings>();
    default::<BodySettings>();
    default::<BuoyancySettings>();
    default::<ExtendedUpdateSettings>();
    default::<MeshSettings>();
    default::<HeightFieldSettings>();
    default::<SoftBodySettings>();
    default::<EventSettings>();
    default::<PointConstraintSettings>();
    default::<DistanceConstraintSettings>();
    default::<FixedConstraintSettings>();
    default::<HingeConstraintSettings>();
    default::<SliderConstraintSettings>();
    default::<ConeConstraintSettings>();
    default::<SwingTwistConstraintSettings>();
    default::<SixDofConstraintSettings>();
    default::<PulleyConstraintSettings>();
    default::<GearConstraintSettings>();
    default::<RackAndPinionConstraintSettings>();
    default::<MotorSettings>();
    default::<SpringSettings>();
    default::<VehicleEngineSettings>();
    default::<VehicleTransmissionSettings>();
}