v2 / vlib / v / tests / options / option_map_fn_value_test.v
29 lines · 24 sloc · 518 bytes · 3108820d90a979214eb0bd5be00d04c895673be5
Raw
1module main
2
3fn func(arg ?string, val &int) ?int {
4 unsafe {
5 *val = 2
6 }
7 return 2
8}
9
10fn test_main() {
11 map1 := {
12 'json': func
13 }
14 assert typeof(map1['json']).name == 'fn (?string, int) ?int'
15
16 number := 0
17 ret := map1['json']('hi', &number)
18 assert number == ret?
19 assert ret? == 2
20
21 mut map2 := map[string]fn (?string, &int) ?int{}
22 map2['json'] = func
23 assert typeof(map2['json']).name == 'fn (?string, int) ?int'
24
25 number2 := 0
26 ret2 := map2['json']('', &number2)
27 assert number2 == ret2?
28 assert ret2? == 2
29}
30