v2 / vlib / v / tests / fns / fn_index_direct_call_test.v
45 lines · 39 sloc · 752 bytes · 9f3bab2894150a1fa0b2f7fe5ef6d399f01ab290
Raw
1struct Placeholder {
2 name string
3}
4
5struct FnStruct {
6mut:
7 array_of_fn []fn (int, &Placeholder, string) bool
8}
9
10fn test_fn_array_direct_call() {
11 mut fs := FnStruct{}
12 fs.array_of_fn << fn (x int, y &Placeholder, z string) bool {
13 return false
14 }
15
16 println(fs.array_of_fn[0](1, &Placeholder{
17 name: 'Bob'
18 }, 'Builder'))
19 assert fs.array_of_fn[0](1, &Placeholder{
20 name: 'Bob'
21 }, 'Builder') == false
22}
23
24fn test_fn_map_direct_call() {
25 a := {
26 'aaa': fn () string {
27 return 'aaa'
28 }
29 'bbb': fn () string {
30 return 'bbb'
31 }
32 }
33 println(a['aaa']())
34 println(a['bbb']())
35 assert a['aaa']() == 'aaa'
36 assert a['bbb']() == 'bbb'
37}
38
39fn add(a int, b int) int {
40 return a + b
41}
42
43fn test_parenthesized_fn_direct_call() {
44 assert (add)(2, 4) == 6
45}
46