コード例 #1
0
        private static WeakReference AttachToManager(Dummy.EventManager manager,
                                                     EventHandler <Dummy.TestObjectEvtWithIntEventArgs> cb)
        {
            var obj = new Dummy.TestObject();

            manager.SetEmitter(obj);

            obj.EvtWithIntEvent += cb;
            return(new WeakReference(obj));
        }
コード例 #2
0
        public static void test_event_from_c_owned_wrapper()
        {
            // Set upon object instantiation
            WeakReference wref = null;

            // Checks in the callback called
            bool callbackCalled = false;
            int  received       = -1;

            // attach to evt with int
            EventHandler <Dummy.TestObjectEvtWithIntEventArgs> cb = (object sender, Dummy.TestObjectEvtWithIntEventArgs args) => {
                callbackCalled = true;
                received       = args.Arg;
                Test.Assert(Object.ReferenceEquals(sender, wref.Target));
            };

            Dummy.EventManager manager = new Dummy.EventManager();
            wref = AttachToManager(manager, cb);

            Test.CollectAndIterate();

            manager.EmitWithInt(42);

            Test.CollectAndIterate();

            Test.Assert(callbackCalled, "Callback must have been called.");
            Test.AssertEquals(42, received, "Wrong value received.");

            // Cleanup checks
            manager.Release();

            // Make sure the released wrapper is collected and release the Eo object
            Test.CollectAndIterate();

            Test.AssertNull(wref.Target);
            manager.Dispose();
        }