v2 / vlib / v / tests / fns / decompose_variadic_test.v
46 lines · 39 sloc · 1.01 KB · 9c0dd5cea2a78a4b5f3e1a02df052ed405fbbf07
Raw
1import arrays
2
3type ConcatValue = []u8 | string
4
5fn get() []int {
6 return [1, 2, 3, 4, 5]
7}
8
9fn get2() [][]int {
10 return [[0], [1, 2, 3, 4, 5]]
11}
12
13fn receive(a ...int) {
14}
15
16fn test_main() {
17 assert arrays.concat([0], ...get().map(it)) == [0, 1, 2, 3, 4, 5]
18 assert arrays.concat[int]([], ...get().map(it)) == [1, 2, 3, 4, 5]
19 assert arrays.concat[[]int]([[0]], ...[get().map(it)]) == [
20 [0],
21 [1, 2, 3, 4, 5],
22 ]
23 assert arrays.concat[int](...get2()) == [0, 1, 2, 3, 4, 5]
24}
25
26fn test_decompose_variadic_generic_sumtype_array_arg() {
27 mut params := []ConcatValue{}
28 ids_bin := [
29 [u8(`a`), `b`],
30 [u8(`c`), `d`],
31 ]
32 params = arrays.concat(params, ...ids_bin)
33 assert params.len == 2
34 assert params[0] is []u8
35 assert params[1] is []u8
36 assert (params[0] as []u8).bytestr() == 'ab'
37 assert (params[1] as []u8).bytestr() == 'cd'
38}
39
40fn test_decompose_variadic_nested_string_array_arg() {
41 a := [['0']]
42 b := [['aa', 'bb']]
43 c := arrays.concat(a, ...b)
44 assert c == [['0'], ['aa', 'bb']]
45 assert c.str() == "[['0'], ['aa', 'bb']]"
46}
47