v4 / vlib / v / tests / interfaces / interface_implicit_str_method_test.v
31 lines · 25 sloc · 717 bytes · 5716ea7682c2af84a94472770e5b14dc3b1d585d
Raw
1interface Stringy {
2 str() string
3}
4
5struct SomeStruct {}
6
7fn stringify(value Stringy) string {
8 return value.str()
9}
10
11fn join(values ...Stringy) string {
12 return values.map(it.str()).join(' ')
13}
14
15fn collect(values []Stringy) string {
16 return values.map(it.str()).join(' ')
17}
18
19fn test_interface_implicit_str_method() {
20 some_struct := SomeStruct{}
21 assert stringify('hi there') == 'hi there'
22 assert stringify(1337) == '1337'
23 assert stringify(true) == 'true'
24 assert stringify(some_struct) == 'SomeStruct{}'
25 assert join('hi', 42, false, some_struct) == 'hi 42 false SomeStruct{}'
26}
27
28fn test_interface_implicit_str_method_for_pointer_arrays() {
29 values := [&SomeStruct{}]
30 assert collect(values) == 'SomeStruct{}'
31}
32