Exemplo n.º 1
0
        public void ShouldProxyParameterlessMethods()
        {
            var obj = new ParameterPassingTest(pInt: 99, pString: "teste");

            var proxy = AspectFactory.Create <IParameterPassingTest>(obj);

            proxy.Test4Void();
            int    vInt    = proxy.Test4Int();
            string vString = proxy.Test4String();

            Assert.AreEqual(obj.Test4Int(), vInt);
            Assert.AreEqual(obj.Test4String(), vString);
        }
Exemplo n.º 2
0
        public void ShouldProxyRefParameters()
        {
            var obj = new ParameterPassingTest(pInt: 99, pString: "teste", pDateTime: DateTime.Now);

            var proxy = AspectFactory.Create <IParameterPassingTest>(obj);

            int      vInt;
            string   vString;
            DateTime vDateTime;

            proxy.Teste5(out vInt, out vString, out vDateTime);

            Assert.AreEqual(obj.PInt, vInt);
            Assert.AreEqual(obj.PString, vString);
            Assert.AreEqual(obj.PDateTime, vDateTime);
        }
Exemplo n.º 3
0
        public void MultipleAspectShouldIntercept()
        {
            MethodContext startContext1, startContext2, endContext1, endContext2;
            startContext1 = startContext2 = endContext1 = endContext2 = null;

            TestAspectAttribute.InterceptStartCallback = (ctx) => startContext1 = ctx;
            TestAspectAttribute.InterceptEndCallback = (ctx) => endContext1 = ctx;
            TestAspect2Attribute.InterceptStartCallback = (ctx) => startContext2 = ctx;
            TestAspect2Attribute.InterceptEndCallback = (ctx) => endContext2 = ctx;

            var obj = new ParameterPassingTest();

            var proxy = AspectFactory.Create<IParameterPassingTest>(obj);

            proxy.Test2("test", 99);

            Assert.IsNotNull(startContext1, "InterceptStart1 was called.");
            Assert.IsNotNull(endContext1, "InterceptEnd1 was called.");
            Assert.IsNotNull(startContext2, "InterceptStart2 was called.");
            Assert.IsNotNull(endContext2, "InterceptEnd2 was called.");
        }
Exemplo n.º 4
0
        public void ParametersShouldBePassedProperly()
        {
            MethodContext startContext = null;
            MethodContext endContext = null;

            TestAspectAttribute.InterceptStartCallback = (ctx) => startContext = ctx;
            TestAspectAttribute.InterceptEndCallback = (ctx) => endContext = ctx;

            var obj = new ParameterPassingTest(5, "test", DateTime.Now.Subtract(TimeSpan.FromMinutes(9999)), long.MaxValue, true, Enumerable.Range(10, 5).ToArray());

            var proxy = AspectFactory.Create<IParameterPassingTest>(obj);

            bool ok = proxy.Test(obj.PInt, obj.PString, obj.PDateTime, obj.PLong, obj.PBool, obj.PArray);

            Assert.IsTrue(ok, "Parameters was ok on real object.");
            Assert.IsNotNull(startContext, "InterceptStart was called.");
            Assert.IsNotNull(endContext, "InterceptEnd was called.");

            var parameters = new object[] { obj.PInt, obj.PString, obj.PDateTime, obj.PLong, obj.PBool, obj.PArray };
            bool okInterceptParameters = startContext.Parameters.Select(i => i.Value).SequenceEqual(parameters);
            Assert.IsTrue(okInterceptParameters, "Parameters received in intercept method was ok on aspect.");
        }
Exemplo n.º 5
0
        public void MultipleAspectShouldIntercept()
        {
            MethodContext startContext1, startContext2, endContext1, endContext2;

            startContext1 = startContext2 = endContext1 = endContext2 = null;

            TestAspectAttribute.InterceptStartCallback  = (ctx) => startContext1 = ctx;
            TestAspectAttribute.InterceptEndCallback    = (ctx) => endContext1 = ctx;
            TestAspect2Attribute.InterceptStartCallback = (ctx) => startContext2 = ctx;
            TestAspect2Attribute.InterceptEndCallback   = (ctx) => endContext2 = ctx;

            var obj = new ParameterPassingTest();

            var proxy = AspectFactory.Create <IParameterPassingTest>(obj);

            proxy.Test2("test", 99);

            Assert.IsNotNull(startContext1, "InterceptStart1 was called.");
            Assert.IsNotNull(endContext1, "InterceptEnd1 was called.");
            Assert.IsNotNull(startContext2, "InterceptStart2 was called.");
            Assert.IsNotNull(endContext2, "InterceptEnd2 was called.");
        }
Exemplo n.º 6
0
        public void ParametersShouldBePassedProperly()
        {
            MethodContext startContext = null;
            MethodContext endContext   = null;

            TestAspectAttribute.InterceptStartCallback = (ctx) => startContext = ctx;
            TestAspectAttribute.InterceptEndCallback   = (ctx) => endContext = ctx;

            var obj = new ParameterPassingTest(5, "test", DateTime.Now.Subtract(TimeSpan.FromMinutes(9999)), long.MaxValue, true, Enumerable.Range(10, 5).ToArray());

            var proxy = AspectFactory.Create <IParameterPassingTest>(obj);

            bool ok = proxy.Test(obj.PInt, obj.PString, obj.PDateTime, obj.PLong, obj.PBool, obj.PArray);

            Assert.IsTrue(ok, "Parameters was ok on real object.");
            Assert.IsNotNull(startContext, "InterceptStart was called.");
            Assert.IsNotNull(endContext, "InterceptEnd was called.");

            var  parameters            = new object[] { obj.PInt, obj.PString, obj.PDateTime, obj.PLong, obj.PBool, obj.PArray };
            bool okInterceptParameters = startContext.Parameters.Select(i => i.Value).SequenceEqual(parameters);

            Assert.IsTrue(okInterceptParameters, "Parameters received in intercept method was ok on aspect.");
        }
Exemplo n.º 7
0
        public void ShouldProxyRefParameters()
        {
            var obj = new ParameterPassingTest(pInt: 99, pString: "teste", pDateTime: DateTime.Now);

            var proxy = AspectFactory.Create<IParameterPassingTest>(obj);

            int vInt;
            string vString;
            DateTime vDateTime;
            proxy.Teste5(out vInt, out vString, out vDateTime);

            Assert.AreEqual(obj.PInt, vInt);
            Assert.AreEqual(obj.PString, vString);
            Assert.AreEqual(obj.PDateTime, vDateTime);
        }
Exemplo n.º 8
0
        public void ShouldProxyParameterlessMethods()
        {
            var obj = new ParameterPassingTest(pInt: 99, pString: "teste");

            var proxy = AspectFactory.Create<IParameterPassingTest>(obj);

            proxy.Test4Void();
            int vInt = proxy.Test4Int();
            string vString = proxy.Test4String();

            Assert.AreEqual(obj.Test4Int(), vInt);
            Assert.AreEqual(obj.Test4String(), vString);
        }