public void TestInvokeCtorWithComplexArgumentCoveriant() { var employee = EmployeeType.CreateInstance("John", 10); var copy = PersonType.CreateInstance(employee).WrapIfValueType(); VerifyFields(copy, new { name = "John", age = 10 }); }
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")); }
public void TestInvokeBaseClassMethods() { var employee = EmployeeType.CreateInstance(); var currentMeters = (double)employee.GetFieldValue("metersTravelled"); employee.CallMethod("Walk", 100d); VerifyFields(employee, new { metersTravelled = currentMeters + 100 }); }
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 }); }
public void TestInvokeWithCoVariantReturnAndParamType() { var person = PersonType.CreateInstance(); var friend = EmployeeType.CreateInstance(); var result = person.CallMethod("AddFriend", friend); Assert.Same(friend, result); }
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)); }