v2 / vlib / v / tests / builtin_arrays / array_of_interface_init_test.v
36 lines · 28 sloc · 478 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Dog {
2 breed string
3}
4
5struct Cat {
6 breed string
7}
8
9fn (d Dog) speak() string {
10 return 'woof'
11}
12
13fn (c Cat) speak() string {
14 return 'meow'
15}
16
17interface Speaker {
18 breed string
19 speak() string
20}
21
22fn test_array_of_interface_init() {
23 dog := Dog{'Leonberger'}
24 cat := Cat{'Siamese'}
25
26 mut rets := []string{}
27
28 for item in [Speaker(dog), cat] {
29 println(item.speak())
30 rets << item.speak()
31 }
32
33 assert rets.len == 2
34 assert rets[0] == 'woof'
35 assert rets[1] == 'meow'
36}
37