Esempio n. 1
0
 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;
 }
Esempio n. 2
0
        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);
                }
            }
        }
Esempio n. 3
0
        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);
        }