Exemple #1
0
        public void Transform_ThrowsArgumentException_IfThereIsNoFieldOrPropertyWithName()
        {
            // Creating the expression "instance.AddNonExistentEvent(handler)"
            Expression instance = Expression.Parameter(typeof(Fixture), "instance");
            Expression handler  = Expression.Parameter(typeof(EventHandler), "handler");
            Expression input    = Expression.Call(instance, FixtureAddNonExistentEvent, handler);

            // Validating that EventAddAttribute fails on non-existent event
            EventAddAttribute attribute = new EventAddAttribute("NonExistentEvent");

            Assert.ThrowsException <ArgumentException>(() => attribute.Transform(input));
        }
Exemple #2
0
        public void Transform_ReplacesMethodCallExpressionWithAddAssignExpression_ForFieldEvents()
        {
            // Creating the expression "instance.AddEvent(handler)"
            ParameterExpression instance = Expression.Parameter(typeof(Fixture), "instance");
            ParameterExpression handler  = Expression.Parameter(typeof(EventHandler), "handler");
            Expression          input    = Expression.Call(instance, FixtureAddEvent, handler);

            // Validating that EventAddAttribute creates expression subscribing to Event
            Expression output = new EventAddAttribute("Event").Transform(input);
            Action <Fixture, EventHandler> addEvent = Expression.Lambda <Action <Fixture, EventHandler> >(output, new[] { instance, handler }).Compile();

            bool         eventEmitted = false;
            Fixture      fixture      = new Fixture();
            EventHandler eventHandler = (sender, e) => eventEmitted = true;

            addEvent(fixture, eventHandler);
            fixture.TriggerEvent();
            Assert.IsTrue(eventEmitted);
        }