public void VariableArguments()
 {
     TestService service = new TestService();
     IRpcMethodDescriptor method = service.GetDescriptor().FindMethodByName("VarMethod");
     object[] args = new object[] { 1, 2, 3, 4 };
     object[] invokeArgs = JsonRpcServices.TransposeVariableArguments(method, args);
     Assert.AreEqual(1, invokeArgs.Length);
     Assert.AreEqual(args, invokeArgs[0]);
 }
 public void FixedAndVariableArguments()
 {
     TestService service = new TestService();
     IRpcMethodDescriptor method = service.GetDescriptor().FindMethodByName("FixedVarMethod");
     object[] args = new object[] { 1, 2, 3, 4 };
     args = JsonRpcServices.TransposeVariableArguments(method, args);
     Assert.AreEqual(3, args.Length);
     Assert.AreEqual(1, args[0]);
     Assert.AreEqual(2, args[1]);
     Assert.AreEqual(new object[] { 3, 4 }, args[2]);
 }
 public void FailedMethodYieldsInvocationException()
 {
     try
     {
         TestService service = new TestService();
         service.GetDescriptor().GetMethodByName("BadMethod").Invoke(service, null);
         Assert.Fail("Expecting an exception.");
     }
     catch (TargetMethodException e)
     {
         Assert.IsTrue(e.InnerException.GetType() == typeof(ApplicationException), "Unexpected inner exception ({0}).", e.InnerException.GetType().FullName);
     }
 }