예제 #1
0
        public void CreateEvent()
        {
            var classEmitter = new CustomClassEmitter(Scope, "CreateEvent", typeof(object));
            CustomEventEmitter eventEmitter = classEmitter.CreateEvent("Eve", EventKind.Instance, typeof(Func <string>));

            eventEmitter.AddMethod.AddStatement(new ReturnStatement());
            eventEmitter.RemoveMethod.AddStatement(new ReturnStatement());

            object instance = Activator.CreateInstance(classEmitter.BuildType());

            Assert.That(instance.GetType().GetEvent("Eve"), Is.Not.Null);
        }
예제 #2
0
        public void SimpleEvent()
        {
            CustomEventEmitter eventEmitter = _classEmitter.CreateEvent("SimpleEvent", EventKind.Instance, typeof(EventHandler));

            Assert.That(eventEmitter.Name, Is.EqualTo("SimpleEvent"));
            Assert.That(eventEmitter.EventType, Is.EqualTo(typeof(EventHandler)));
            Assert.That(eventEmitter.EventKind, Is.EqualTo(EventKind.Instance));

            ImplementEventAddMethod(eventEmitter);
            ImplementEventRemoveMethod(eventEmitter);

            object instance = BuildInstance();

            Assert.That(AddCalled(instance), Is.False);
            Assert.That(RemoveCalled(instance), Is.False);

            AddEventMethod(instance, eventEmitter, (EventHandler) delegate { });

            Assert.That(AddCalled(instance), Is.True);
            Assert.That(RemoveCalled(instance), Is.False);

            RemoveEventMethod(instance, eventEmitter, (EventHandler) delegate { });

            Assert.That(AddCalled(instance), Is.True);
            Assert.That(RemoveCalled(instance), Is.True);
        }