v2 / vlib / v / tests / fns / variadic_interface_array_arg_test.v
48 lines · 39 sloc · 1.11 KB · 43f13b56fb5782cd6d1802636d51d683bd06cf14
Raw
1import rand
2
3interface VariadicValue {}
4
5fn variadic_capture(values ...VariadicValue) []VariadicValue {
6 return values
7}
8
9fn variadic_bytes() []u8 {
10 return [u8(1), 2, 3]
11}
12
13fn test_variadic_interface_array_variable_as_single_arg() {
14 nested := [VariadicValue('brother')]
15 got := variadic_capture(nested)
16 assert got.len == 1
17
18 inner := got[0] as []VariadicValue
19 assert inner.len == 1
20 assert (inner[0] as string) == 'brother'
21}
22
23fn test_variadic_interface_array_literal_as_single_arg() {
24 got := variadic_capture([VariadicValue('x')])
25 assert got.len == 1
26
27 inner := got[0] as []VariadicValue
28 assert inner.len == 1
29 assert (inner[0] as string) == 'x'
30}
31
32fn test_variadic_interface_array_variable_with_additional_args() {
33 bytes := variadic_bytes()
34 got := variadic_capture(bytes, 'tail')
35 assert got.len == 2
36 assert got[0] as []u8 == bytes
37 assert got[1] as string == 'tail'
38}
39
40fn test_variadic_interface_array_result_with_additional_args() ! {
41 for _ in 0 .. 3 {
42 bytes := rand.bytes(16)!
43 got := variadic_capture(bytes, 'tail')
44 assert got.len == 2
45 assert got[0] as []u8 == bytes
46 assert got[1] as string == 'tail'
47 }
48}
49