コード例 #1
0
        public void InstanceMethodPair_Constructor_AsynchronousMethodAndSimpleMethodParams()
        {
            var methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.EchoAsync));
            var subject    = (IProxySubject) new ProxySubject();
            var pair       = new InstanceMethodPair(subject, methodInfo);

            Assert.IsNotNull(pair);
        }
コード例 #2
0
        public async Task InstanceMethodPair_Invoke_SynchronousMethodAndSimpleMethodParams_ThrowsArgumentNullException()
        {
            var      methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.Echo));
            var      subject    = (IProxySubject) new ProxySubject();
            var      pair       = new InstanceMethodPair(subject, methodInfo);
            IRequest request    = null;

            var response = await pair.InvokeAsync(request);
        }
コード例 #3
0
        public void InstanceMethodPair_GetArguments_NullRequest_ThrowsArgumentNullException()
        {
            var      methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.Echo));
            var      parameters = methodInfo.GetParameters();
            var      subject    = (IProxySubject) new ProxySubject();
            var      pair       = new InstanceMethodPair(subject, methodInfo);
            IRequest request    = null;

            var arguments = InstanceMethodPair.GetArguments(request, parameters);
        }
コード例 #4
0
        public void InstanceMethodPair_GetArguments_Fails_DueToUnsupportedParamsKeyword()
        {
            var methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.PassStringParams));
            var parameters = methodInfo.GetParameters();
            var request    = new Request(methodInfo, new object[] { ProxySubject.EchoValueConst }, Constants.OrganizationId, Constants.InstanceId, Constants.MessageReplyPath);

            Assert.AreEqual(1, request.ArgumentCount);
            Assert.AreEqual(1, parameters.Length);

            var arguments = InstanceMethodPair.GetArguments(request, parameters);
        }
コード例 #5
0
        public void InstanceMethodPair_GetArguments_Fails_DueToTypeMismatch()
        {
            var methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.Echo));
            var parameters = methodInfo.GetParameters();
            var request    = new Request(methodInfo, new object[] { 3 }, Constants.OrganizationId, Constants.InstanceId, Constants.MessageReplyPath);

            Assert.AreEqual(1, request.ArgumentCount);
            Assert.AreEqual(1, parameters.Length);

            var arguments = InstanceMethodPair.GetArguments(request, parameters);
        }
コード例 #6
0
        public void InstanceMethodPair_GetArguments_NullParameters_ThrowsArgumentNullException()
        {
            var methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.Echo));

            ParameterInfo[] parameters = null;
            var             subject    = (IProxySubject) new ProxySubject();
            var             pair       = new InstanceMethodPair(subject, methodInfo);
            var             request    = new Request(methodInfo, new object[1] {
                ProxySubject.EchoValueConst
            }, Constants.OrganizationId, Constants.InstanceId, Constants.MessageReplyPath);

            var arguments = InstanceMethodPair.GetArguments(request, parameters);
        }
コード例 #7
0
        public void InstanceMethodPair_GetArguments_Succeeds_ReturnsNonNullArguments()
        {
            var methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.Echo));
            var parameters = methodInfo.GetParameters();
            var request    = new Request(methodInfo, new object[] { ProxySubject.EchoValueConst }, Constants.OrganizationId, Constants.InstanceId, Constants.MessageReplyPath);

            Assert.AreEqual(1, request.ArgumentCount);
            Assert.AreEqual(1, parameters.Length);

            var arguments = InstanceMethodPair.GetArguments(request, parameters);

            Assert.IsNotNull(arguments);
        }
コード例 #8
0
        public async Task InstanceMethodPair_Invoke_AsynchronousMethodAndSimpleMethodParams_ReturnsNonNullResponse()
        {
            var methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.EchoAsync));

            var subject = (IProxySubject) new ProxySubject();
            var pair    = new InstanceMethodPair(subject, methodInfo);
            var request = new Request(methodInfo, new object[1] {
                ProxySubject.EchoValueConst
            }, Constants.OrganizationId, Constants.InstanceId, Constants.MessageReplyPath);

            var response = await pair.InvokeAsync(request);

            Assert.IsNotNull(response);
        }
コード例 #9
0
        public async Task InstanceMethodPair_Invoke_SynchronousMethodAndSimpleMethodParams_ReturnsCorrectResponse()
        {
            var methodInfo = typeof(ProxySubject).GetMethod(nameof(ProxySubject.Echo));

            var subject = (IProxySubject) new ProxySubject();
            var pair    = new InstanceMethodPair(subject, methodInfo);
            var request = new Request(methodInfo, new object[1] {
                ProxySubject.EchoValueConst
            }, Constants.OrganizationId, Constants.InstanceId, Constants.MessageReplyPath);

            var response = await pair.InvokeAsync(request);

            Assert.AreEqual(request.CorrelationId, response.CorrelationId);
            Assert.AreEqual(request.Id, response.RequestId);
            Assert.AreEqual(ProxySubject.EchoValueConst, response.ReturnValue);
            Assert.AreEqual(ProxySubject.EchoValueConst, response.GetTypedReturnValue <string>());
        }
コード例 #10
0
 public static List<InstanceMethodPair> GenerateMethodList(Camera camToCopy)
 {
     var result = new List<InstanceMethodPair>();
     foreach (var script in camToCopy.gameObject.GetComponents<MonoBehaviour>())
     {
         if (script.enabled)
         {
             Type scriptType = script.GetType();
             MethodInfo m = scriptType.GetMethod("OnRenderImage",
                 BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null,
                 new Type[] { typeof(RenderTexture), typeof(RenderTexture) }, null);
             if (m != null)
             {
                 InstanceMethodPair pair = new InstanceMethodPair();
                 pair.Instance = script;
                 pair.Method = m;
                 result.Add(pair);
             }
         }
     }
     return result;
 }
コード例 #11
0
        public static List <InstanceMethodPair> GenerateMethodList(Camera camToCopy)
        {
            var result = new List <InstanceMethodPair>();

            foreach (var script in camToCopy.gameObject.GetComponents <MonoBehaviour>())
            {
                if (script.enabled)
                {
                    Type       scriptType = script.GetType();
                    MethodInfo m          = scriptType.GetMethod("OnRenderImage",
                                                                 BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null,
                                                                 new Type[] { typeof(RenderTexture), typeof(RenderTexture) }, null);
                    if (m != null)
                    {
                        InstanceMethodPair pair = new InstanceMethodPair();
                        pair.Instance = script;
                        pair.Method   = m;
                        result.Add(pair);
                    }
                }
            }
            return(result);
        }