v2 / vlib / v / tests / assign / assign_array_fixed_from_union_test.v
29 lines · 28 sloc · 715 bytes · dddbacb1960b838b75532443d7ed24328d85daa7
Raw
1union Convertor {
2 su8_array_p [20]u8
3 sint_array_p [5]i32
4}
5
6fn test_main() {
7 a := [1, 2, 3, 4, 5]!
8 p := voidptr(unsafe { &Convertor(&a[0]) })
9 c := unsafe { &Convertor(p).su8_array_p }
10 dump(a)
11 dump(p)
12 dump(c)
13 assert a == [1, 2, 3, 4, 5]!
14 assert p != 0
15 $if little_endian {
16 $if new_int ? && x64 {
17 assert c == [u8(1), 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0]!
18 } $else {
19 assert c == [u8(1), 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0]!
20 }
21 }
22 $if big_endian {
23 $if new_int ? && x64 {
24 assert c == [u8(0), 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0]!
25 } $else {
26 assert c == [u8(0), 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5]!
27 }
28 }
29}
30