예제 #1
0
        public void RetransposingYieldsTheSame()
        {
            TestService service = new TestService();
            Method      method  = service.GetClass().FindMethodByName("FixedVarMethod");

            object[] args = new object[] { 1, 2, 3, 4 };
            args = method.TransposeVariableArguments(args);
            args = method.TransposeVariableArguments(args);
            Assert.AreEqual(3, args.Length);
            Assert.AreEqual(1, args[0]);
            Assert.AreEqual(2, args[1]);
            Assert.AreEqual(new object[] { 3, 4 }, args[2]);
        }
예제 #2
0
        public void Bug8148()
        {
            //
            // Bug #8148: Varargs transposition drops args
            // http://developer.berlios.de/bugs/?func=detailbug&bug_id=8148&group_id=4638
            //

            TestService service = new TestService();
            Method      method  = service.GetClass().FindMethodByName("FixedVarMethod");

            object[] args = new object[] { 1, 2,
                                           new int[] { 3, 4 },
                                           new JsonObject(new string[] { "five", "six" }, new object[] { 5, 6 }) };
            args = method.TransposeVariableArguments(args);
            Assert.AreEqual(3, args.Length);
            Assert.AreEqual(1, args[0]);
            Assert.AreEqual(2, args[1]);
            object[] varargs = (object[])args[2];
            Assert.AreEqual(2, varargs.Length);
            Assert.AreEqual(new int[] { 3, 4 }, varargs[0]);
            JsonObject o = (JsonObject)varargs[1];

            Assert.AreEqual(5, o["five"]);
            Assert.AreEqual(6, o["six"]);
        }
예제 #3
0
        public void VariableArguments()
        {
            TestService service = new TestService();
            Method      method  = service.GetClass().FindMethodByName("VarMethod");

            object[] args       = new object[] { 1, 2, 3, 4 };
            object[] invokeArgs = method.TransposeVariableArguments(args);
            Assert.AreEqual(1, invokeArgs.Length);
            Assert.AreEqual(args, invokeArgs[0]);
        }
예제 #4
0
        public void Bug8131()
        {
            //
            // Bug #8131: Varargs transposition when last arg is collection
            // http://developer.berlios.de/bugs/?func=detailbug&bug_id=8131&group_id=4638
            //

            TestService service = new TestService();
            Method      method  = service.GetClass().FindMethodByName("VarMethod");

            object[] args = new object[] { 1, 2, new int[] { 3, 4 } };
            args = method.TransposeVariableArguments(args);
            Assert.AreEqual(1, args.Length);
            object[] varargs = (object[])args[0];
            Assert.AreEqual(3, varargs.Length);
            Assert.AreEqual(1, varargs[0]);
            Assert.AreEqual(2, varargs[1]);
            Assert.AreEqual(new int[] { 3, 4 }, varargs[2]);
        }