| 1 | import arrays |
| 2 | |
| 3 | type ConcatValue = []u8 | string |
| 4 | |
| 5 | fn get() []int { |
| 6 | return [1, 2, 3, 4, 5] |
| 7 | } |
| 8 | |
| 9 | fn get2() [][]int { |
| 10 | return [[0], [1, 2, 3, 4, 5]] |
| 11 | } |
| 12 | |
| 13 | fn receive(a ...int) { |
| 14 | } |
| 15 | |
| 16 | fn 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 | |
| 26 | fn 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 | |
| 40 | fn 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 | |