v2 / vlib / v / tests / options / option_method_selector_test.v
29 lines · 25 sloc · 379 bytes · 719fa4dc13fed914812dc2f736f87ec9414e4b12
Raw
1struct Foo {
2mut:
3 func ?fn (voidptr) bool = unsafe { nil }
4}
5
6fn callback(foo &Foo) bool {
7 return foo.func != none
8}
9
10type OptFn = fn (&Foo) bool
11
12fn test_main() {
13 t := Foo{
14 func: callback
15 }
16 assert t.func? == callback
17 if t.func != none {
18 assert t.func(&t)
19 } else {
20 assert false
21 }
22
23 a := ?OptFn(callback)
24 if a != none {
25 assert a(&t)
26 } else {
27 assert false
28 }
29}
30