summaryrefslogtreecommitdiff
path: root/src/tests/efl_mono/FunctionPointerMarshalling.cs
blob: 0f943d32653408c13e0b5d54263235440e12c81a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Linq;
using System.Runtime.InteropServices;

namespace TestSuite
{

class TestFunctionPointerMarshalling
{
    public static void func_pointer_marshalling()
    {
        var obj = new Dummy.TestObject();
        bool called = false;
        Eina.Strbuf buf = new Eina.Strbuf();
        string argument = "Some String";
        Eina.Value v = new Eina.Value(Eina.ValueType.String);
        v.Set(argument);
        string reference = new string(argument.ToCharArray().Reverse().ToArray());

        obj.CallFormatCb(buf, v, (Eina.Strbuf ibuf, Eina.Value val) => {
            called = true;
            string str = null;
            val.Get(out str);
            buf.Append(new string(str.ToCharArray().Reverse().ToArray()));
        });

        Test.Assert(called, "Callback was not called");
        Test.AssertEquals(reference, buf.Steal());
    }
}
}