v2 / vlib / v / tests / interfaces / interface_auto_str_gen_test.v
50 lines · 43 sloc · 650 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Dog {
2 breed string
3}
4
5struct Cat {
6 breed string
7}
8
9interface Animal {
10 breed string
11}
12
13fn test_auto_str_gen_for_interfaces() {
14 x := Animal(Cat{'Siamese'})
15 assert '${x}' == "
16Animal(Cat{
17 breed: 'Siamese'
18})
19".trim_space()
20}
21
22struct Holder {
23 x Animal
24}
25
26struct Holder2 {
27 x map[string]Holder
28 breed string
29}
30
31fn test_auto_str_gen_for_complex_interface_types() {
32 a := Animal(Dog{'hi'})
33 h := Holder{a}
34 m := {
35 'dsa': h
36 }
37 h2 := Holder2{m, 'N/A'}
38 a2 := Animal(h2)
39
40 assert '${a2}' == r"
41Animal(Holder2{
42 x: {'dsa': Holder{
43 x: Animal(Dog{
44 breed: 'hi'
45 })
46 }}
47 breed: 'N/A'
48})
49 ".trim_space()
50}
51