v2 / vlib / v / tests / comptime / comptime_aggregate_var_test.v
33 lines · 30 sloc · 802 bytes · dddbacb1960b838b75532443d7ed24328d85daa7
Raw
1module main
2
3type Value = int | i64 | u64 | string | []u8
4
5fn d(val Value) string {
6 match val {
7 int, i64, u64, []u8 {
8 s := sizeof(val)
9 x := val
10 return 'Value is number or byte array, size=${s} ${x}'
11 }
12 string {
13 x := val
14 return 'Value is string: ${x}'
15 }
16 }
17}
18
19fn test_main() {
20 assert d(Value(0)) == $if new_int ? && x64 {
21 'Value is number or byte array, size=8 0'
22 } $else {
23 'Value is number or byte array, size=4 0'
24 }
25 assert d(Value(i64(1))) == 'Value is number or byte array, size=8 1'
26 assert d(Value(u64(2))) == 'Value is number or byte array, size=8 2'
27 assert d(Value([u8(1), 2])) == $if new_int ? && x64 {
28 'Value is number or byte array, size=48 [1, 2]'
29 } $else {
30 'Value is number or byte array, size=32 [1, 2]'
31 }
32 assert d(Value('')) == 'Value is string: '
33}
34