Exemple #1
0
        public void ShouldDisposeInvokeTest()
        {
            MockRuntimeInterception mockRuntimeInterception;
            IRuntimeInvocation      mockRuntimeInvocation;
            IRuntimeContext         mockRuntimeContext;
            object     proxyInstance;
            Type       proxiedType;
            MethodInfo invokedMethodInfo;

            object[] invocationParameters;
            object   returnValue;

            proxyInstance         = new object();
            proxiedType           = typeof(IDisposable);
            invokedMethodInfo     = typeof(IDisposable).GetMethod(nameof(IDisposable.Dispose));
            invocationParameters  = new object[] { };
            mockRuntimeInvocation = new RuntimeInvocation(proxyInstance, proxiedType, invokedMethodInfo, invocationParameters, null);
            mockRuntimeContext    = null;

            mockRuntimeInterception = new MockRuntimeInterception();
            mockRuntimeInterception.Invoke(mockRuntimeInvocation, mockRuntimeContext);
            returnValue = mockRuntimeInvocation.InvocationReturnValue;

            Assert.IsNull(returnValue);
            Assert.IsTrue(mockRuntimeInterception.IsDisposed);
        }
Exemple #2
0
        public void ShouldToStringInvokeTest()
        {
            MockRuntimeInterception mockRuntimeInterception;
            IRuntimeInvocation      mockRuntimeInvocation;
            IRuntimeContext         mockRuntimeContext;
            object     proxyInstance;
            Type       proxiedType;
            MethodInfo invokedMethodInfo;

            object[] invocationParameters;
            object   returnValue;

            proxyInstance         = new object();
            proxiedType           = typeof(IMockObject);
            invokedMethodInfo     = typeof(object).GetMethod(nameof(this.ToString));
            invocationParameters  = new object[] { };
            mockRuntimeInvocation = new RuntimeInvocation(proxyInstance, proxiedType, invokedMethodInfo, invocationParameters, null);
            mockRuntimeContext    = null;

            mockRuntimeInterception = new MockRuntimeInterception();
            mockRuntimeInterception.Invoke(mockRuntimeInvocation, mockRuntimeContext);
            returnValue = mockRuntimeInvocation.InvocationReturnValue;

            Assert.AreEqual(typeof(MockRuntimeInterception).FullName, returnValue);
        }
Exemple #3
0
        public void ShouldCloneInvokeTest()
        {
            MockRuntimeInterception mockRuntimeInterception;
            IRuntimeInvocation      mockRuntimeInvocation;
            IRuntimeContext         mockRuntimeContext;
            object     proxyInstance;
            Type       proxiedType;
            MethodInfo invokedMethodInfo;

            object[] invocationParameters;
            object   returnValue;

            proxyInstance         = new MockCloneable();
            proxiedType           = typeof(IMockCloneable);
            invokedMethodInfo     = typeof(IMockCloneable).GetMethod(nameof(IMockCloneable.Clone));
            invocationParameters  = new object[] { };
            mockRuntimeInvocation = new RuntimeInvocation(proxyInstance, proxiedType, invokedMethodInfo, invocationParameters, null);
            mockRuntimeContext    = null;

            mockRuntimeInterception = new MockRuntimeInterception();
            mockRuntimeInterception.Invoke(mockRuntimeInvocation, mockRuntimeContext);
            returnValue = mockRuntimeInvocation.InvocationReturnValue;

            Assert.IsNull(returnValue);
            Assert.AreEqual("IMockCloneable::Clone", mockRuntimeInterception.LastOperationName);
        }
Exemple #4
0
        public void Intercept(IInvocation invocation)
        {
            RuntimeContext       runtimeContext;
            IRuntimeInvocation   runtimeInvocation;
            IRuntimeInterception runtimeInterception;

            if ((object)invocation == null)
            {
                throw new ArgumentNullException(nameof(invocation));
            }

            runtimeContext = new RuntimeContext();
            runtimeContext.ContinueInterception = true;

            runtimeInvocation = new RuntimeInvocation(invocation.Proxy, /*invocation.TargetType*/ invocation.Method.DeclaringType, invocation.Method, invocation.Arguments, invocation.InvocationTarget);

            for (int index = 0; index < this.RuntimeInterceptionChain.Length && runtimeContext.ContinueInterception; index++)
            {
                runtimeContext.InterceptionCount = this.RuntimeInterceptionChain.Length + 1;
                runtimeContext.InterceptionIndex = index;

                runtimeInterception = this.RuntimeInterceptionChain[index];
                runtimeInterception.Invoke(runtimeInvocation, runtimeContext);
            }
        }
Exemple #5
0
        public void ShouldFailOnNullInputParameterInvokeTest()
        {
            MockRuntimeInterception mockRuntimeInterception;
            IRuntimeInvocation      mockRuntimeInvocation;
            IRuntimeContext         mockRuntimeContext;
            object     proxyInstance;
            Type       proxiedType;
            MethodInfo invokedMethodInfo;

            object[] invocationParameters;

            proxyInstance         = new object();
            proxiedType           = typeof(IMockObject);
            invokedMethodInfo     = typeof(IMockObject).GetMethod(nameof(this.ToString));
            invocationParameters  = null;
            mockRuntimeInvocation = new RuntimeInvocation(proxyInstance, proxiedType, invokedMethodInfo, invocationParameters, null);
            mockRuntimeContext    = null;

            mockRuntimeInterception = new MockRuntimeInterception();
            mockRuntimeInterception.Invoke(mockRuntimeInvocation, mockRuntimeContext);
        }