public void EventAdd_ByTypes_Private()
        {
            var accessor = DelegateFactory.EventAdd <TestClass, TestClass.PrivateEventArgs>("PrivateEvent");

            Assert.IsNotNull(accessor);
            var eventExecuted = false;

            accessor(_testClassInstance, (sender, args) =>
            {
                eventExecuted = true;
                Assert.IsInstanceOfType(args, typeof(TestClass.PrivateEventArgs));
            });
            _testClassInstance.InvokePrivateEvent();
            Assert.IsTrue(eventExecuted);
        }
        public void EventAdd_ByObjects_Protected()
        {
            var accessor = _testClassType.EventAdd("ProtectedEvent");

            Assert.IsNotNull(accessor);
            var eventExecuted = false;

            accessor(_testClassInstance, (sender, args) =>
            {
                eventExecuted = true;
                Assert.IsInstanceOfType(args, typeof(TestClass.ProtectedEventArgs));
            });
            _testClassInstance.InvokeProtectedEvent();
            Assert.IsTrue(eventExecuted);
        }
        public void EventAdd_ByObjectAndType_Internal()
        {
            var accessor = _testClassType.EventAdd <TestClass.InternalEventArgs>("InternalEvent");

            Assert.IsNotNull(accessor);
            var eventExecuted = false;

            accessor(_testClassInstance, (sender, args) =>
            {
                eventExecuted = true;
                Assert.IsInstanceOfType(args, typeof(TestClass.InternalEventArgs));
            });
            _testClassInstance.InvokeInternalEvent();
            Assert.IsTrue(eventExecuted);
        }
        public void EventAdd_Interface_ByTypes()
        {
            var accessor = DelegateFactory.EventAdd <IService, EventArgs>("Event");

            Assert.IsNotNull(accessor);
            var eventExecuted = false;
            EventHandler <EventArgs> eventAction = (sender, args) =>
            {
                eventExecuted = true;
                Assert.IsInstanceOfType(args, typeof(EventArgs));
            };

            accessor(_interfaceImpl, eventAction);
            _interfaceImpl.InvokeEvent();
            Assert.IsTrue(eventExecuted);
        }
        public void EventAdd_Interface_ByObjectAndType()
        {
            var accessor = _interfaceType.EventAdd <EventArgs>("Event");

            Assert.IsNotNull(accessor);
            var eventExecuted = false;
            EventHandler <EventArgs> eventAction = (sender, args) =>
            {
                eventExecuted = true;
                Assert.IsInstanceOfType(args, typeof(EventArgs));
            };

            accessor(_interfaceImpl, eventAction);
            _interfaceImpl.InvokeEvent();
            Assert.IsTrue(eventExecuted);
        }