vxx2 / vlib / v / tests / interfaces / interface_match_smartcast_array_test.v
36 lines · 32 sloc · 616 bytes · 00ff5eabc0cef089901bcda105b034c66f3f72e8
Raw
1interface Value {}
2
3fn bytes_to_blr(param []u8) ([]u8, []u8) {
4 return param.clone(), param
5}
6
7fn interface_match_call(v Value) []u8 {
8 match v {
9 []u8 {
10 blr, value := bytes_to_blr(v)
11 assert value == [u8(1), 2, 3]
12 return blr
13 }
14 else {
15 return []u8{}
16 }
17 }
18}
19
20fn interface_match_return(v Value) []u8 {
21 match v {
22 []u8 {
23 matched := v
24 return matched
25 }
26 else {
27 return []u8{}
28 }
29 }
30}
31
32fn test_interface_match_array_smartcast_for_call_and_return() {
33 input := Value([u8(1), 2, 3])
34 assert interface_match_call(input) == [u8(1), 2, 3]
35 assert interface_match_return(input) == [u8(1), 2, 3]
36}
37