v2 / vlib / v / tests / fixed_array_2_dims_embed_test.v
48 lines · 41 sloc · 853 bytes · d3b5dbd58cca4b7dd538d0bc866df7d77c493083
Raw
1module main
2
3type Mat4 = [16]f32
4type Mat14 = [1][16]f32
5
6@[heap]
7struct GameObject {
8mut:
9 transform Mat4
10 transform2 Mat14
11}
12
13@[heap]
14struct Ship {
15 GameObject
16}
17
18fn Ship.new() &Ship {
19 mut ship := &Ship{}
20 return ship
21}
22
23fn (mut ship Ship) clone() &Ship {
24 return &Ship{
25 ...ship
26 }
27}
28
29fn test_main() {
30 mut v1 := Ship.new()
31 v1.transform[0] = 1.0
32 v1.transform[15] = 2.0
33 v1.transform2[0][0] = 1.0
34 v1.transform2[0][15] = 2.0
35 mut v2 := v1.clone()
36 eprintln('v1=${v1.transform}\nv2=${v2.transform}')
37 assert v1.transform == v2.transform
38 assert v1.transform2 == v2.transform2
39 assert v1.transform[0] == 1.0
40 assert v2.transform[0] == 1.0
41 assert v1.transform[15] == 2.0
42 assert v2.transform[15] == 2.0
43
44 assert v1.transform2[0][0] == 1.0
45 assert v2.transform2[0][0] == 1.0
46 assert v1.transform2[0][15] == 2.0
47 assert v2.transform2[0][15] == 2.0
48}
49