test_vscmgInitialization
Verify VSCMG attachment initialization and repeatable configuration validation.
- test_vscmgInitialization.configuration(model)[source]
Create a device with finite geometry and nonzero spin and gimbal inertia.
- test_vscmgInitialization.coupled_configuration_with_invalid_divisor(case)[source]
Construct finite inputs that produce a zero or overflowing coupled divisor.
- test_vscmgInitialization.simulation_with_effector(config, priority=None)[source]
Attach one device and optionally schedule its command-processing lifecycle.
- test_vscmgInitialization.test_attachment_matches_both_scheduler_orders(model)[source]
Derived properties and propagation must agree with either Reset ordering or no scheduled Reset.
- test_vscmgInitialization.test_coupled_divisor_is_checked_again_during_propagation()[source]
A valid startup must not bypass guards when a later dynamics evaluation is singular.
- test_vscmgInitialization.test_device_count_at_payload_capacity_processes_last_command(model)[source]
The largest supported array must command and publish its last device correctly.
- test_vscmgInitialization.test_device_count_exceeding_payload_capacity_is_rejected(path)[source]
Reject oversized device arrays before accessing fixed-size message payloads.
- test_vscmgInitialization.test_fully_coupled_device_allows_massless_gimbal()[source]
Only wheel and total mass are divisors in fully coupled initialization.
- test_vscmgInitialization.test_gimbal_friction_uses_its_own_smoothing_ratio(wheel_ratio)[source]
Gimbal smoothing must be independent of the wheel friction configuration.
- test_vscmgInitialization.test_invalid_configuration_rejected(path, field, value, match)[source]
Reject each invalid configuration before state registration or derived divisions.
- test_vscmgInitialization.test_invalid_coupled_divisors_stop_initialization(case, divisor)[source]
Fail before dividing by a singular coupled inertia or elimination coefficient.
- test_vscmgInitialization.test_invalid_coupled_spin_divisor_is_rejected_by_reset(case)[source]
Validate the configuration-dependent spin divisor without linked parent states.
- test_vscmgInitialization.test_invalid_linear_friction_threshold_is_rejected(limit_field, ratio_field, limit, ratio)[source]
Finite settings must not create a zero, negative, or infinite friction divisor.
- test_vscmgInitialization.test_massless_device_has_finite_derived_values(model)[source]
Balanced and simple jitter devices retain support for zero translational mass.
- test_vscmgInitialization.test_mixed_models_publish_only_their_own_jitter_angles(models)[source]
Output indexing must follow the compact jitter state array when models are mixed.
- test_vscmgInitialization.test_motor_arithmetic_overflow_is_rejected_before_applying_torque()[source]
Finite commands and friction must not silently overflow the applied torque.
- test_vscmgInitialization.test_negative_motor_limits_and_friction_ratios_remain_supported()[source]
Negative sentinels disable limits and friction smoothing without rejecting valid commands.
- test_vscmgInitialization.test_nonfinite_command_is_rejected_before_motor_processing(field, value)[source]
Reject non-finite commanded torques before saturation or friction can mask them.
- test_vscmgInitialization.test_nonfinite_motor_configuration_is_rejected(path, value, field)[source]
Reject non-finite motor settings through both configuration entry points.