mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
53 lines
977 B
V
53 lines
977 B
V
struct Foo[T] {
|
|
foo T
|
|
}
|
|
|
|
struct Bar[T] {
|
|
mut:
|
|
foos []Foo[T]
|
|
}
|
|
|
|
fn (mut b Bar[T]) add(v T) {
|
|
b.foos << Foo[T]{
|
|
foo: v
|
|
}
|
|
}
|
|
|
|
fn test_nested_generics_struct_init() {
|
|
mut bar1 := Bar[string]{}
|
|
bar1.add('bar')
|
|
println(bar1)
|
|
|
|
result1 := '${bar1}'
|
|
assert result1.contains('Bar[string]{')
|
|
assert result1.contains('foos: [Foo[string]{')
|
|
assert result1.contains("foo: 'bar'")
|
|
|
|
mut bar2 := Bar[int]{}
|
|
bar2.add(22)
|
|
println(bar2)
|
|
|
|
result2 := '${bar2}'
|
|
assert result2.contains('Bar[int]{')
|
|
assert result2.contains('foos: [Foo[int]{')
|
|
assert result2.contains('foo: 22')
|
|
|
|
mut bar3 := Bar[f64]{}
|
|
bar3.add(2.2)
|
|
println(bar3)
|
|
|
|
result3 := '${bar3}'
|
|
assert result3.contains('Bar[f64]{')
|
|
assert result3.contains('foos: [Foo[f64]{')
|
|
assert result3.contains('foo: 2.2')
|
|
|
|
mut bar4 := Bar[bool]{}
|
|
bar4.add(true)
|
|
println(bar4)
|
|
|
|
result4 := '${bar4}'
|
|
assert result4.contains('Bar[bool]{')
|
|
assert result4.contains('foos: [Foo[bool]{')
|
|
assert result4.contains('foo: true')
|
|
}
|