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());
            v.Dispose();
            buf.Dispose();
            obj.Dispose();
        }
示例#2
0
        public static void test_tostring()
        {
            Eina.Strbuf buf = new Eina.Strbuf();
            buf.Append("Hello");
            buf.Append(' ');
            buf.Append("World!");

            Test.AssertEquals("Hello World!", buf.ToString());
        }
示例#3
0
文件: Strbuf.cs 项目: zmike/efl-tmp
        public static void test_steal()
        {
            Eina.Strbuf buf = new Eina.Strbuf();

            buf.Append("Here's");
            buf.Append(' ');
            buf.Append("Johnny!");

            Test.AssertEquals("Here's Jonnny!".Length, buf.Length);
            Test.AssertEquals("Here's Johnny!", buf.Steal());
        }
示例#4
0
文件: Strbuf.cs 项目: zmike/efl-tmp
        public static void test_eolian()
        {
            var obj = new Dummy.TestObject();

            Eina.Strbuf buf = new Eina.Strbuf();

            obj.AppendToStrbuf(buf, "Appended");
            obj.AppendToStrbuf(buf, " to buf");

            Test.AssertEquals("Appended to buf", buf.Steal());
        }
示例#5
0
        internal static void Cb(IntPtr cb_data, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]   Eina.Strbuf str, Eina.ValueNative value)
        {
            GCHandle     handle = GCHandle.FromIntPtr(cb_data);
            FormatFuncCb cb     = (FormatFuncCb)handle.Target;

            try {
                cb(str, value);
            } catch (Exception e) {
                Eina.Log.Warning($"Callback error: {e.ToString()}");
                Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
            }
        }
示例#6
0
文件: Strbuf.cs 项目: zmike/efl-tmp
        public static void test_virtual_eolian()
        {
            Appender obj = new Appender();

            Eina.Strbuf buf = new Eina.Strbuf();

            obj.CallAppendToStrbuf(buf, "Is");
            obj.CallAppendToStrbuf(buf, " this");
            obj.CallAppendToStrbuf(buf, " virtual?");

            Test.Assert(obj.called);
            Test.AssertEquals("Is this virtual?", buf.Steal());
        }
示例#7
0
文件: Strbuf.cs 项目: zmike/efl-tmp
 public override void AppendToStrbuf(Eina.Strbuf buf, string str)
 {
     Eina.Log.Error("Virtual wrapper called");
     called = true;
     buf.Append(str);
 }
示例#8
0
 internal void ManagedCb(Eina.Strbuf str, Eina.Value value)
 {
     _cb(_cb_data, str, value);
     Eina.Error.RaiseIfUnhandledException();
 }