Пример #1
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);
                }
            }
Пример #2
0
		public void ShouldCloneInvokeTest()
		{
			MockRuntimeInterception mockRuntimeInterception;
			IRuntimeInvocation mockRuntimeInvocation;
			IRuntimeContext mockRuntimeContext;
			object proxyInstance;
			Type proxiedType;
			MethodInfo invokedMethodInfo;
			object[] invocationParameters;
			object returnValue;

			proxyInstance = new object();
			proxiedType = typeof(IMockCloneable);
			invokedMethodInfo = typeof(IMockCloneable).GetMethod("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);
		}
Пример #3
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("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.Disposed);
		}
Пример #4
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("ToString");
			invocationParameters = null;
			mockRuntimeInvocation = new RuntimeInvocation(proxyInstance, proxiedType, invokedMethodInfo, invocationParameters, null);
			mockRuntimeContext = null;

			mockRuntimeInterception = new MockRuntimeInterception();
			mockRuntimeInterception.Invoke(mockRuntimeInvocation, mockRuntimeContext);
		}
Пример #5
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(IMockObject).GetMethod("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(IMockObject).FullName, returnValue);
		}