v2 / vlib / v / tests / options / option_generic_selector_unwrap_test.v
33 lines · 29 sloc · 562 bytes · 27f637a8dcb84709477cfe02f302e4cec57a40ab
Raw
1type SumType = int | string | f64
2
3struct Foo[T] {
4 field ?SumType
5}
6
7fn t[T](val Foo[T]) {
8 if val.field != none {
9 if val.field is string {
10 dump(val.field)
11 assert val.field == 'foo'
12 } else if val.field is int {
13 dump(val.field)
14 assert val.field == 1
15 } else if val.field is f64 {
16 dump(val.field)
17 assert val.field == 1.23
18 }
19 } else {
20 dump(val.field)
21 assert val.field == none
22 }
23}
24
25fn test_main() {
26 t(Foo[int]{})
27 t(Foo[string]{})
28 t(Foo[f64]{})
29
30 t(Foo[int]{ field: 1 })
31 t(Foo[string]{ field: 'foo' })
32 t(Foo[f64]{ field: 1.23 })
33}
34