| 1 | module sim |
| 2 | |
| 3 | const sim_test_mock_params = SimParams{ |
| 4 | rope_length: 0.25 |
| 5 | bearing_mass: 0.03 |
| 6 | magnet_spacing: 0.05 |
| 7 | magnet_height: 0.03 |
| 8 | magnet_strength: 10 |
| 9 | gravity: 4.9 |
| 10 | } |
| 11 | const sim_test_mock_state = SimState{ |
| 12 | position: vector( |
| 13 | x: -0.016957230930171364 |
| 14 | y: -0.02937078552673521 |
| 15 | z: 0.002311063475327252 |
| 16 | ) |
| 17 | velocity: vector( |
| 18 | x: -7.251158929833104 |
| 19 | y: -12.559375680227724 |
| 20 | z: -105.91539687686381 |
| 21 | ) |
| 22 | accel: vector( |
| 23 | x: -8.337034766251843e-11 |
| 24 | y: -2.842170943040401e-10 |
| 25 | z: 1.2126596023639044e-10 |
| 26 | ) |
| 27 | } |
| 28 | |
| 29 | pub fn test_satisfy_rope_constraint() { |
| 30 | mut state := SimState{ |
| 31 | ...sim_test_mock_state |
| 32 | } |
| 33 | |
| 34 | state.satisfy_rope_constraint(sim_test_mock_params) |
| 35 | assert state.position.x == -0.016957230930171364 |
| 36 | assert state.position.y == -0.02937078552673521 |
| 37 | assert state.position.z == 0.002311063475327252 |
| 38 | assert state.velocity.x == -7.251158929833104 |
| 39 | assert state.velocity.y == -12.559375680227724 |
| 40 | assert state.velocity.z == -105.91539687686381 |
| 41 | assert state.accel.x == -8.337034766251843e-11 |
| 42 | assert state.accel.y == -2.842170943040401e-10 |
| 43 | assert state.accel.z == 1.2126596023639044e-10 |
| 44 | } |
| 45 | |
| 46 | pub fn test_increment() { |
| 47 | mut state := SimState{ |
| 48 | ...sim_test_mock_state |
| 49 | } |
| 50 | |
| 51 | delta_t := 0.0005 |
| 52 | state.increment(delta_t, sim_test_mock_params) |
| 53 | assert state.position.x == -0.016957230930171364 |
| 54 | assert state.position.y == -0.02937078552673524 |
| 55 | assert state.position.z == 0.0023110634753272796 |
| 56 | assert state.velocity.x == -7.251158929833047 |
| 57 | assert state.velocity.y == -12.559375680227637 |
| 58 | assert state.velocity.z == -105.9153968768638 |
| 59 | assert state.accel.x == 1.1368683772161604e-10 |
| 60 | assert state.accel.y == 1.7431981783981126e-10 |
| 61 | assert state.accel.z == 3.031649005909761e-11 |
| 62 | } |
| 63 | |