/// <summary> /// The create field. /// </summary> /// <param name="propertyInfo"> /// The property. /// </param> /// <param name="parentField"> /// The parent field. /// </param> /// <returns> /// The <see cref="ISingleItemViewDisplayListDisplayFieldViewModel"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// The <paramref name="propertyInfo"/> parameter is null. /// </exception> /// <exception cref="ArgumentNullException"> /// The <paramref name="parentField"/> parameter is null. /// </exception> public ISingleItemViewDisplayListDisplayFieldViewModel CreateField(PropertyInfo propertyInfo, ISingleItemViewDisplayListFieldViewModel parentField) { if (propertyInfo == null) throw new ArgumentNullException("propertyInfo"); if (parentField == null) throw new ArgumentNullException("parentField"); var displayField = new SingleItemViewDisplayListDisplayFieldViewModel(parentField) { ViewTemplate = FieldTemplateCreator.CreateTemplate(propertyInfo) }; var displayAttribute = propertyInfo.GetCustomAttribute<DisplayAttribute>(); if (displayAttribute != null) { displayField.Header = displayAttribute.GetName(); displayField.Order = displayAttribute.GetOrder() ?? int.MaxValue; } var displayFieldAttribute = propertyInfo.GetCustomAttribute<ReferenceDisplayFieldAttribute>(); if (displayFieldAttribute != null) { displayField.IsFieldNameHidden = displayFieldAttribute.IsFieldNameHidden; displayField.WidthPercentage = displayFieldAttribute.WidthPercentage / 100.0; } return displayField; }
public void PropertiesTest() { // Arrange. var parentField = Mock.Create<ISingleItemViewDisplayListFieldViewModel>(Behavior.Loose); var field = new SingleItemViewDisplayListDisplayFieldViewModel(parentField); // Act / Assert. Assert.AreSame(parentField, field.ParentField); Assert.AreEqual(1.0, field.WidthPercentage); TestsHelper.TestPublicPropertiesGetSet(field, f => f.WidthPercentage); field.WidthPercentage = 0.5; Assert.AreEqual(0.5, field.WidthPercentage); TestsHelper.VerifyThrow<ArgumentOutOfRangeException>(() => field.WidthPercentage = -0.5); TestsHelper.VerifyThrow<ArgumentOutOfRangeException>(() => field.WidthPercentage = 1.5); }
public void NotifyPropertyChangedTest() { // Arrange. var parentField = Mock.Create<ISingleItemViewDisplayListFieldViewModel>(Behavior.Loose); var field = new SingleItemViewDisplayListDisplayFieldViewModel(parentField); // Act / Assert. TestsHelper.TestPropertyWithNotifyPropertyChanged(field, () => field.IsFieldNameHidden); TestsHelper.TestPropertyWithNotifyPropertyChanged(field, () => field.ViewTemplate); TestsHelper.TestPropertyWithNotifyPropertyChanged(field, () => field.Header); TestsHelper.TestPropertyWithNotifyPropertyChanged(field, () => field.Order); var hasNotified = false; field.PropertyChanged += (sender, e) => hasNotified = hasNotified || e.PropertyName == TestsHelper.ExtractPropertyName(() => field.WidthPercentage); field.WidthPercentage = 0.5; }