v2 / vlib / v / tests / generics / generics_nested_struct_init_test.v
52 lines · 42 sloc · 977 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Foo[T] {
2 foo T
3}
4
5struct Bar[T] {
6mut:
7 foos []Foo[T]
8}
9
10fn (mut b Bar[T]) add(v T) {
11 b.foos << Foo[T]{
12 foo: v
13 }
14}
15
16fn test_nested_generics_struct_init() {
17 mut bar1 := Bar[string]{}
18 bar1.add('bar')
19 println(bar1)
20
21 result1 := '${bar1}'
22 assert result1.contains('Bar[string]{')
23 assert result1.contains('foos: [Foo[string]{')
24 assert result1.contains("foo: 'bar'")
25
26 mut bar2 := Bar[int]{}
27 bar2.add(22)
28 println(bar2)
29
30 result2 := '${bar2}'
31 assert result2.contains('Bar[int]{')
32 assert result2.contains('foos: [Foo[int]{')
33 assert result2.contains('foo: 22')
34
35 mut bar3 := Bar[f64]{}
36 bar3.add(2.2)
37 println(bar3)
38
39 result3 := '${bar3}'
40 assert result3.contains('Bar[f64]{')
41 assert result3.contains('foos: [Foo[f64]{')
42 assert result3.contains('foo: 2.2')
43
44 mut bar4 := Bar[bool]{}
45 bar4.add(true)
46 println(bar4)
47
48 result4 := '${bar4}'
49 assert result4.contains('Bar[bool]{')
50 assert result4.contains('foos: [Foo[bool]{')
51 assert result4.contains('foo: true')
52}
53