v / examples / pendulum-simulation / modules / sim / worker_test.v
61 lines · 59 sloc · 1.24 KB · acf6b344f733169ec6ecc9881f8a8c2c795b9883
Raw
1module sim
2
3const 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}
11const 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
29fn 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