v2 / vlib / v / tests / sizeof_test.v
50 lines · 45 sloc · 690 bytes · dddbacb1960b838b75532443d7ed24328d85daa7
Raw
1import math
2import flag
3
4struct S1 {
5 p voidptr
6}
7
8struct S2 {
9 i int
10}
11
12fn test_math_sizeof() {
13 r := math.f32_from_bits(sizeof(i32))
14 assert f64(r) > 5.6e-45 && f64(r) < 5.7e-45
15}
16
17fn test_sizeof() {
18 assert sizeof(rune) == 4
19 assert sizeof[[44]u8]() == 44
20 assert sizeof(`€`) == 4
21 // depends on -m32/64
22 assert sizeof(S1) in [u32(4), 8]
23 s := S2{}
24 assert sizeof(s.i) == $if new_int ? && x64 {
25 8
26 } $else {
27 4
28 }
29 assert sizeof(flag.Flag) > 4
30
31 assert sizeof(c'hello') == 6
32 assert sizeof(r'hello') == $if x64 {
33 $if new_int ? {
34 24
35 } $else {
36 16
37 }
38 } $else {
39 12
40 }
41 assert sizeof('hello') == $if x64 {
42 $if new_int ? {
43 24
44 } $else {
45 16
46 }
47 } $else {
48 12
49 }
50}
51