public void CreateProxyFromInterfaceWithIntOutParameterTest()
        {
            // Arrange
            var invocationHandler = new SetParametersInvocationHandler { Parameters = new object[] { 2 } };

            // Act
            var proxy = _proxyFactory.CreateProxy<IIntOutParameter>(Type.EmptyTypes, invocationHandler);
            int value;

            proxy.Method(out value);

            // Assert
            Assert.That(invocationHandler.Parameters[0], Is.EqualTo(2));
        }
        public void CreateProxyFromInterfaceWithStructOutParameterTest()
        {
            // Arrange
            var invocationHandler = new SetParametersInvocationHandler { Parameters = new object[] { new StructType { Integer = 2, String = "2" } } };

            // Act
            var proxy = _proxyFactory.CreateProxy<IStructOutParameter>(Type.EmptyTypes, invocationHandler);
            StructType value;

            proxy.Method(out value);

            // Assert
            Assert.That(invocationHandler.Parameters[0], Is.EqualTo(new StructType { Integer = 2, String = "2" }));
        }
        public void CreateProxyFromInterfaceWithGenericListOutParameterTest()
        {
            // Arrange
            var invocationHandler = new SetParametersInvocationHandler { Parameters = new object[] { new List<string> { "Two" } } };

            // Act
            var proxy = _proxyFactory.CreateProxy<IGenericListOutParameter>(Type.EmptyTypes, invocationHandler);
            List<string> value;

            proxy.Method(out value);

            // Assert
            Assert.That(invocationHandler.Parameters[0], Is.EqualTo(new List<string> { "Two" }));
        }
        public void CreateProxyFromClassWithStringOutParameterTest()
        {
            // Arrange
            var invocationHandler = new SetParametersInvocationHandler { Parameters = new object[] { "2" } };

            // Act
            var proxy = _proxyFactory.CreateProxy<StringOutParameter>(Type.EmptyTypes, invocationHandler);
            string value;

            proxy.Method(out value);

            // Assert
            Assert.That(invocationHandler.Parameters[0], Is.EqualTo("2"));
        }
        public void CreateProxyFromClassWithGenericRankArrayOutParameterTest()
        {
            // Arrange
            var invocationHandler = new SetParametersInvocationHandler { Parameters = new object[] { new[,] { { "Two", "Two" } } } };

            // Act
            var proxy = _proxyFactory.CreateProxy<GenericRankArrayOutParameter>(Type.EmptyTypes, invocationHandler);
            string[,] value;

            proxy.Method(out value);

            // Assert
            Assert.That(invocationHandler.Parameters[0], Is.EqualTo(new[,] { { "Two", "Two" } }));
        }
        public void CreateProxyFromClassWithEnumArrayOutParameterTest()
        {
            // Arrange
            var invocationHandler = new SetParametersInvocationHandler { Parameters = new object[] { new[] { EnumType.Two } } };

            // Act
            var proxy = _proxyFactory.CreateProxy<EnumArrayOutParameter>(Type.EmptyTypes, invocationHandler);
            EnumType[] value;

            proxy.Method(out value);

            // Assert
            Assert.That(invocationHandler.Parameters[0], Is.EqualTo(new[] { EnumType.Two }));
        }
        public void CreateProxyFromAbstractClassWithIntArrayOutParameterTest()
        {
            // Arrange
            var invocationHandler = new SetParametersInvocationHandler { Parameters = new object[] { new[] { 2 } } };

            // Act
            var proxy = _proxyFactory.CreateProxy<IntArrayOutParameterBase>(Type.EmptyTypes, invocationHandler);
            int[] value;

            proxy.Method(out value);

            // Assert
            Assert.That(invocationHandler.Parameters[0], Is.EqualTo(new[] { 2 }));
        }