| 1 | module sim |
| 2 | |
| 3 | const worker_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 worker_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 | fn test_compute_result() { |
| 30 | request := SimRequest{ |
| 31 | id: 0 |
| 32 | params: worker_test_mock_params |
| 33 | state: worker_test_mock_state |
| 34 | } |
| 35 | expected_state := SimState{ |
| 36 | position: vector( |
| 37 | x: -0.01695723093017135 |
| 38 | y: -0.029370785526735183 |
| 39 | z: 0.002311063475327252 |
| 40 | ) |
| 41 | velocity: vector( |
| 42 | x: -7.251158929831753 |
| 43 | y: -12.55937568022536 |
| 44 | z: -105.91539687684447 |
| 45 | ) |
| 46 | accel: vector( |
| 47 | x: -1.1368683772161603e-11 |
| 48 | y: -1.5916157281026244e-10 |
| 49 | z: 0 |
| 50 | ) |
| 51 | } |
| 52 | expected := &SimResult{ |
| 53 | state: expected_state |
| 54 | id: 0 |
| 55 | magnet1_distance: 0.07993696666249225 |
| 56 | magnet2_distance: 0.07993696666249224 |
| 57 | magnet3_distance: 0.03609361938278008 |
| 58 | } |
| 59 | result := compute_result(request) |
| 60 | assert result == expected |
| 61 | } |
| 62 | |