v2 / vlib / builtin / linux_bare / old / .checks / structs / structs.v
42 lines · 37 sloc · 1000 bytes · 14434cc86aa1ca2a98c023313db3f0ca2a136537
Raw
1module main
2import forkedtest
3
4struct SimpleEmptyStruct{
5}
6
7struct NonEmptyStruct{
8 x int
9 y int
10 z int
11}
12
13fn check_simple_empty_struct(){
14 s := SimpleEmptyStruct{}
15 addr_s := &s
16 str_addr_s := ptr_str( addr_s )
17 assert !isnil(addr_s)
18 assert str_addr_s.len > 3
19 println(str_addr_s)
20}
21
22fn check_non_empty_struct(){
23 a := NonEmptyStruct{1,2,3}
24 b := NonEmptyStruct{4,5,6}
25 assert sizeof(NonEmptyStruct) > 0
26 assert sizeof(SimpleEmptyStruct) < sizeof(NonEmptyStruct)
27 assert a.x == 1
28 assert a.y == 2
29 assert a.z == 3
30 assert b.x + b.y + b.z == 15
31 assert ptr_str(&a) != ptr_str(&b)
32 println('sizeof SimpleEmptyStruct:' + i64_str( sizeof(SimpleEmptyStruct) , 10 ))
33 println('sizeof NonEmptyStruct:' + i64_str( sizeof(NonEmptyStruct) , 10 ))
34}
35
36fn main(){
37 mut fails := 0
38 fails += forkedtest.normal_run(check_simple_empty_struct, "check_simple_empty_struct")
39 fails += forkedtest.normal_run(check_non_empty_struct, "check_non_empty_struct")
40 assert fails == 0
41 sys_exit(0)
42}
43