public void FormatValueToFilter_StringBadCharacters_ReturnsFilteredString() { //prepare var mapping = new StringPropertyMapping <StringPropertyMappingTest>(_mappingArguments); //act var value = mapping.FormatValueToFilter("a\\*()\u0000z"); //assert value.Should().Be.EqualTo("a\\5c\\2a\\28\\29\\00z"); }
public void FormatValueToFilter_String_ReturnsString() { //prepare var mapping = new StringPropertyMapping <StringPropertyMappingTest>(_mappingArguments); //act var value = mapping.FormatValueToFilter("str"); //assert value.Should().Be.EqualTo("str"); }
public void FormatValueFromDirectory_Null_ReturnsNull() { //prepare _mappingArguments.PropertyType = typeof(string); var mapping = new StringPropertyMapping <StringPropertyMappingTest>(_mappingArguments); //act var value = mapping.FormatValueFromDirectory(null, "dn"); //assert value.Should().Be.Null(); }
public void FormatValueFromDirectory_ZeroLength_ReturnsEmptyString() { //prepare _mappingArguments.PropertyType = typeof(string); var mapping = new StringPropertyMapping <StringPropertyMappingTest>(_mappingArguments); //act var value = mapping.FormatValueFromDirectory(new DirectoryAttribute("name"), "dn"); //assert value.Should().Be.EqualTo(string.Empty); }
public void IsEqual_OneNull_ReturnsFalse() { //prepare _mappingArguments.Getter = t => null; var propertyMapping = new StringPropertyMapping <StringPropertyMappingTest>(_mappingArguments); DirectoryAttributeModification modification; //act var value = propertyMapping.IsEqual(this, "2", out modification); //assert value.Should().Be.False(); modification.Should().Not.Be.Null(); }
public void GetDirectoryAttributeModification_String_ReturnsString() { //prepare _mappingArguments.Getter = t => "str"; var propertyMapping = new StringPropertyMapping <StringPropertyMappingTest>(_mappingArguments); //act var value = propertyMapping.GetDirectoryAttributeModification(this); //assert value.Name.Should().Be.EqualTo(_mappingArguments.AttributeName); value.Operation.Should().Be.EqualTo(DirectoryAttributeOperation.Replace); value[0].Should().Be.EqualTo("str"); }
public void IsEqual_SameValues_ReturnsTrue() { //prepare _mappingArguments.Getter = t => "4"; var propertyMapping = new StringPropertyMapping <StringPropertyMappingTest>(_mappingArguments); DirectoryAttributeModification modification; //act var value = propertyMapping.IsEqual(this, "4", out modification); //assert value.Should().Be.True(); modification.Should().Be.Null(); }
public virtual IPropertyMapping ToPropertyMapping() { IPropertyMapping mapping; var type = typeof(T); var arguments = new PropertyMappingArguments <T> { PropertyName = PropertyInfo.Name, PropertyType = PropertyInfo.PropertyType, AttributeName = AttributeName ?? PropertyInfo.Name.Replace('_', '-'), Getter = DelegateBuilder.BuildGetter <T>(PropertyInfo), Setter = !type.IsAnonymous() ? DelegateBuilder.BuildSetter <T>(PropertyInfo) : null, IsDistinguishedName = IsDistinguishedName, ReadOnly = IsDistinguishedName ? ReadOnly.Always : ReadOnlyConfiguration.GetValueOrDefault(ReadOnly.Never), DirectoryMappings = null, InstanceMappings = null }; if (PropertyInfo.PropertyType == typeof(DateTime) || PropertyInfo.PropertyType == typeof(DateTime?)) { mapping = new DatePropertyMapping <T>(arguments, DateTimeFormat); } else if (PropertyInfo.PropertyType.IsEnum || (Nullable.GetUnderlyingType(PropertyInfo.PropertyType) != null && Nullable.GetUnderlyingType(PropertyInfo.PropertyType).IsEnum)) { mapping = new EnumPropertyMapping <T>(arguments, IsEnumStoredAsInt); } else if (PropertyInfo.PropertyType == typeof(byte[])) { mapping = new ByteArrayPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(Guid) || PropertyInfo.PropertyType == typeof(Guid?)) { mapping = new GuidPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(string)) { mapping = new StringPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(string[])) { mapping = new StringArrayPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(DateTime[]) || PropertyInfo.PropertyType == typeof(DateTime?[])) { mapping = new DateArrayPropertyMapping <T>(arguments, DateTimeFormat); } else if (PropertyInfo.PropertyType == typeof(ICollection <DateTime>) || PropertyInfo.PropertyType == typeof(Collection <DateTime>) || PropertyInfo.PropertyType == typeof(ICollection <DateTime?>) || PropertyInfo.PropertyType == typeof(Collection <DateTime?>)) { mapping = new DateCollectionPropertyMapping <T>(arguments, DateTimeFormat); } else if (PropertyInfo.PropertyType == typeof(Collection <string>) || PropertyInfo.PropertyType == typeof(ICollection <string>)) { mapping = new StringCollectionPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(Collection <byte[]>) || PropertyInfo.PropertyType == typeof(ICollection <byte[]>)) { mapping = new ByteArrayCollectionPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(bool) || PropertyInfo.PropertyType == typeof(bool?)) { mapping = new BooleanPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(SecurityIdentifier)) { mapping = new SecurityIdentifierPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(SecurityIdentifier[])) { mapping = new SecurityIdentifierArrayPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(ICollection <SecurityIdentifier>) || PropertyInfo.PropertyType == typeof(Collection <SecurityIdentifier>)) { mapping = new SecurityIdentifierCollectionPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(X509Certificate2) || PropertyInfo.PropertyType == typeof(X509Certificate)) { mapping = new X509Certificate2PropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(byte[][])) { mapping = new ByteArrayArrayPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(ICollection <X509Certificate>) || PropertyInfo.PropertyType == typeof(Collection <X509Certificate>) || PropertyInfo.PropertyType == typeof(ICollection <X509Certificate2>) || PropertyInfo.PropertyType == typeof(Collection <X509Certificate2>)) { mapping = new X509Certificate2CollectionPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType == typeof(X509Certificate[]) || PropertyInfo.PropertyType == typeof(X509Certificate2[])) { mapping = new X509Certificate2ArrayPropertyMapping <T>(arguments); } else if (PropertyInfo.PropertyType.IsValueType || (Nullable.GetUnderlyingType(PropertyInfo.PropertyType) != null)) { mapping = new NumericPropertyMapping <T>(arguments); } else if (typeof(IDirectoryAttributes).IsAssignableFrom(PropertyInfo.PropertyType)) { mapping = new CatchAllPropertyMapping <T>(arguments); } else { throw new MappingException(string.Format("Type '{0}' could not be mapped.", PropertyInfo.PropertyType.FullName)); } return(mapping); }