Example #1
0
        public void TestInvokeCtorWithComplexArgumentCoveriant()
        {
            var employee = EmployeeType.CreateInstance("John", 10);
            var copy     = PersonType.CreateInstance(employee).WrapIfValueType();

            VerifyFields(copy, new { name = "John", age = 10 });
        }
Example #2
0
        public void TestInvokeCtorWithArrayArgument()
        {
            var employee = EmployeeType.CreateInstance(new[] { EmployeeType.MakeArrayType() },
                                                       new[] { new Employee[0] });

            Assert.IsNotNull(employee);
            Assert.AreEqual(0, employee.GetPropertyValue("Subordinates").GetPropertyValue("Length"));
        }
Example #3
0
        public void TestInvokeBaseClassMethods()
        {
            var employee      = EmployeeType.CreateInstance();
            var currentMeters = (double)employee.GetFieldValue("metersTravelled");

            employee.CallMethod("Walk", 100d);
            VerifyFields(employee, new { metersTravelled = currentMeters + 100 });
        }
Example #4
0
        public void TestInvokeExplicitlyImplementedMethod()
        {
            var employee      = EmployeeType.CreateInstance();
            var currentMeters = (double)employee.GetFieldValue("metersTravelled");

            employee.CallMethod("Swim", Flags.InstanceAnyVisibility | Flags.TrimExplicitlyImplemented, 100d);
            VerifyFields(employee, new { metersTravelled = currentMeters + 100 });
        }
Example #5
0
        public void TestInvokeWithCoVariantReturnAndParamType()
        {
            var person = PersonType.CreateInstance();
            var friend = EmployeeType.CreateInstance();
            var result = person.CallMethod("AddFriend", friend);

            Assert.Same(friend, result);
        }
Example #6
0
        public void TestGetSetElementsOnArrayProperty()
        {
            var employee = EmployeeType.CreateInstance();

            employee.SetPropertyValue("Subordinates", new Employee[10]);
            var subordinates = employee.GetPropertyValue("Subordinates");

            subordinates.SetElement(5, employee);
            Assert.Equal(employee, subordinates.GetElement(5));
        }