public ParameterModel([NotNull] ParameterModel other) { Action = other.Action; Attributes = new List <object>(other.Attributes); BinderMetadata = other.BinderMetadata; IsOptional = other.IsOptional; ParameterInfo = other.ParameterInfo; ParameterName = other.ParameterName; }
public void CopyConstructor_CopiesAllProperties() { // Arrange var parameter = new ParameterModel(typeof(TestController).GetMethod("Edit").GetParameters()[0]); parameter.Action = new ActionModel(typeof(TestController).GetMethod("Edit")); parameter.Attributes.Add(new FromBodyAttribute()); parameter.BinderMetadata = (IBinderMetadata)parameter.Attributes[0]; parameter.IsOptional = true; parameter.ParameterName = "id"; // Act var parameter2 = new ParameterModel(parameter); // Assert foreach (var property in typeof(ParameterModel).GetProperties()) { var value1 = property.GetValue(parameter); var value2 = property.GetValue(parameter2); if (typeof(IEnumerable <object>).IsAssignableFrom(property.PropertyType)) { Assert.Equal <object>((IEnumerable <object>)value1, (IEnumerable <object>)value2); // Ensure non-default value Assert.NotEmpty((IEnumerable <object>)value1); } else if (property.PropertyType.IsValueType || Nullable.GetUnderlyingType(property.PropertyType) != null) { Assert.Equal(value1, value2); // Ensure non-default value Assert.NotEqual(value1, Activator.CreateInstance(property.PropertyType)); } else { Assert.Same(value1, value2); // Ensure non-default value Assert.NotNull(value1); } } }
public void CopyConstructor_DoesDeepCopyOfOtherModels() { // Arrange var action = new ActionModel(typeof(TestController).GetMethod("Edit")); var parameter = new ParameterModel(action.ActionMethod.GetParameters()[0]); parameter.Action = action; action.Parameters.Add(parameter); var route = new AttributeRouteModel(new HttpGetAttribute("api/Products")); action.AttributeRouteModel = route; // Act var action2 = new ActionModel(action); // Assert Assert.NotSame(action, action2.Parameters[0]); Assert.NotSame(route, action2.AttributeRouteModel); }