Example #1
0
        public void ConstructorInvokeTest()
        {
            var constructors = new Constructors();
            var messageType  = typeof(Message).GetTypeData();

            var case1 = new InvokeTestCase
            {
                ConstructorData = messageType.Constructors.Get(new Name(constructors.DefaultConstructor)),
                Parameters      = new object[0],
                Value           = string.Empty
            };

            var case2 = new InvokeTestCase
            {
                ConstructorData = messageType.Constructors.Get(new Name(constructors.NotDefaultConstructor)),
                Parameters      = new object[] { "test" },
                Value           = "test"
            };

            Run(Test, case1, case2);

            void Test(InvokeTestCase testCase)
            {
                AreEqual(testCase.Value, testCase.ConstructorData.Invoke <Message>(testCase.Parameters).Value);
            }
        }
        public void MethodInvokeTest()
        {
            var message       = new Message();
            var messageHelper = new MessageHelper();

            var case1 = new InvokeTestCase
            {
                MethodBaseData = messageHelper.MessageType.Methods.Get(new Name(messageHelper.Append)),
                Void           = true,
                Parameters     = new object[] { "string" },
                Value          = "string"
            };

            var case2 = new InvokeTestCase
            {
                MethodBaseData = messageHelper.MessageType.Methods.Get(new Name(messageHelper.GetCharacters)),
                Void           = false,
                Parameters     = new object[0],
                ReturnValue    = case1.Value.ToCharArray()
            };

            Run(Test, case1, case2);

            void Test(InvokeTestCase testCase)
            {
                if (!testCase.Void)
                {
                    SequenceEquals((char[])testCase.ReturnValue, testCase.MethodBaseData.Invoke <char[]>(message, testCase.Parameters));
                }
                else
                {
                    testCase.MethodBaseData.Invoke(message, testCase.Parameters);
                    AreEqual(testCase.Value, message.Value);
                }
            }
        }