public void ReturnsNoPropertiesForOpenGenericTypes() { var propertyDataManager = new PropertyDataManager(); var catelTypeInfo = propertyDataManager.GetCatelTypeInfo(typeof(GenericClass <>)); Assert.AreEqual(0, catelTypeInfo.GetCatelProperties().Count); }
public void ThrowsPropertyAlreadyRegisteredExceptionForDoubleRegistration() { var propertyDataManager = new PropertyDataManager(); RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"); ExceptionTester.CallMethodAndExpectException <PropertyAlreadyRegisteredException>(() => RegisterProperty(propertyDataManager, "stringProperty", "defaultValue")); }
public PropertyService(string connectionString) { _dataManager = new PropertyDataManager(connectionString); Properties = _dataManager.GetAllProperties(); var lastIndex = Properties.Count - 1; _maxId = lastIndex == -1 ? 0 : Properties[lastIndex].Id; }
public void ThrowsArgumentNullExceptionForNullType() { var propertyDataManager = new PropertyDataManager(); RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"); ExceptionTester.CallMethodAndExpectException <ArgumentNullException>(() => propertyDataManager.MapXmlElementNameToPropertyName(null, "stringProperty")); }
public void ReturnsTrueForRegisteredProperty() { PropertyDataManager propertyDataManager = new PropertyDataManager(); RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"); Assert.IsTrue(propertyDataManager.IsPropertyRegistered(typeof(PropertyDataManagerFacts), "stringProperty")); }
public void ThrowsArgumentExceptionForNullAndEmptyName() { var propertyDataManager = new PropertyDataManager(); RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"); ExceptionTester.CallMethodAndExpectException <ArgumentException>(() => propertyDataManager.MapXmlElementNameToPropertyName(typeof(PropertyDataManagerFacts), null)); ExceptionTester.CallMethodAndExpectException <ArgumentException>(() => propertyDataManager.MapXmlElementNameToPropertyName(typeof(PropertyDataManagerFacts), string.Empty)); }
public void SuccessfullyRegistersProperty() { var propertyDataManager = new PropertyDataManager(); RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"); var catelTypeInfo = propertyDataManager.GetCatelTypeInfo(typeof(PropertyDataManagerFacts)); Assert.AreEqual(1, catelTypeInfo.GetCatelProperties().Count); Assert.AreEqual("defaultValue", catelTypeInfo.GetPropertyData("stringProperty").GetDefaultValue()); }
public void ReturnsPropertyDataForRegisteredProperty() { PropertyDataManager propertyDataManager = new PropertyDataManager(); RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"); var propertyData = propertyDataManager.GetPropertyData(typeof(PropertyDataManagerFacts), "stringProperty"); Assert.IsNotNull(propertyData); Assert.AreEqual("stringProperty", propertyData.Name); }
public void SuccessfullyRegistersProperty() { PropertyDataManager propertyDataManager = new PropertyDataManager(); RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"); var registeredProperties = propertyDataManager.GetProperties(typeof(PropertyDataManagerFacts)); Assert.AreEqual(1, registeredProperties.Count); Assert.AreEqual("defaultValue", registeredProperties["stringProperty"].GetDefaultValue()); }
/// <summary> /// Returns the sequence of properties of the specified type. /// </summary> /// <param name="type">The type.</param> /// <param name="schema">The schema.</param> /// <param name="schemaSet">The schema set.</param> /// <returns>Sequence containing all properties.</returns> /// <exception cref="ArgumentNullException">The <paramref name="type"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="schema"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="schemaSet"/> is <c>null</c>.</exception> private static XmlSchemaSequence GetPropertiesSequence(Type type, XmlSchema schema, XmlSchemaSet schemaSet) { Argument.IsNotNull("type", type); Argument.IsNotNull("schema", schema); Argument.IsNotNull("schemaSet", schemaSet); var propertiesSequence = new XmlSchemaSequence(); if (typeof(ModelBase).IsAssignableFromEx(type)) { var typeNs = GetTypeNamespaceForSchema(type); var propertyDataManager = new PropertyDataManager(); var properties = (from propertyDefinition in propertyDataManager.GetProperties(type) where propertyDefinition.Value.IncludeInSerialization orderby propertyDefinition.Value.Name select propertyDefinition); foreach (var property in properties) { var propertyDefinition = property.Value; var propertySchemaElement = new XmlSchemaElement(); propertySchemaElement.Name = propertyDefinition.Name; if (propertyDefinition.Type.ImplementsInterfaceEx(typeof(IEnumerable)) && propertyDefinition.Type != typeof(string)) { propertySchemaElement.SchemaTypeName = new XmlQualifiedName(string.Format("{0}", propertyDefinition.Name), typeNs); var collectionPropertyType = new XmlSchemaComplexType(); collectionPropertyType.Name = string.Format("{0}", propertyDefinition.Name); schema.Items.Add(collectionPropertyType); foreach (var genericArgument in propertyDefinition.Type.GetGenericArguments()) { AddTypeToSchemaSet(genericArgument, schemaSet); } } else { propertySchemaElement.SchemaTypeName = AddTypeToSchemaSet(propertyDefinition.Type, schemaSet); propertySchemaElement.IsNillable = IsNullableType(propertyDefinition.Type); propertySchemaElement.MinOccurs = 0; } propertiesSequence.Items.Add(propertySchemaElement); } } return(propertiesSequence); }
public void ReturnsRightPropertiesByType() { PropertyDataManager propertyDataManager = new PropertyDataManager(); RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"); RegisterProperty(propertyDataManager, "objectProperty", new object()); RegisterProperty(propertyDataManager, "intProperty", 1); var registeredProperties = propertyDataManager.GetProperties(typeof(PropertyDataManagerFacts)); var keys = registeredProperties.Keys.ToArray(); Assert.AreEqual(3, registeredProperties.Count); Assert.AreEqual("stringProperty", keys[0]); Assert.AreEqual("objectProperty", keys[1]); Assert.AreEqual("intProperty", keys[2]); }
public void ThrowsArgumentNullExceptionForNullType() { var propertyDataManager = new PropertyDataManager(); ExceptionTester.CallMethodAndExpectException <ArgumentNullException>(() => propertyDataManager.GetCatelTypeInfo(null)); }
/// <summary> /// Registers the property with the property data manager. This is a shortcut method so the PropertyData doesn't have /// to be declared every time. /// </summary> /// <typeparam name="T">Type of the property.</typeparam> /// <param name="propertyDataManager">The property data manager.</param> /// <param name="name">The name.</param> /// <param name="defaultValue">The default value.</param> private static void RegisterProperty <T>(PropertyDataManager propertyDataManager, string name, T defaultValue) { propertyDataManager.RegisterProperty(typeof(PropertyDataManagerFacts), name, new PropertyData(name, typeof(T), defaultValue, false, null, false, false, false, false, false)); }
public void ReturnsFalseForUnregisteredProperty() { PropertyDataManager propertyDataManager = new PropertyDataManager(); Assert.IsFalse(propertyDataManager.IsPropertyRegistered(typeof(PropertyDataManagerFacts), "stringProperty")); }
public void ThrowsPropertyNotRegisteredExceptionForUnregisteredProperty() { PropertyDataManager propertyDataManager = new PropertyDataManager(); ExceptionTester.CallMethodAndExpectException <PropertyNotRegisteredException>(() => propertyDataManager.GetPropertyData(typeof(PropertyDataManagerFacts), "stringProperty")); }
/// <summary> /// Returns the sequence of properties of the specified type. /// </summary> /// <param name="type">The type.</param> /// <param name="schema">The schema.</param> /// <param name="schemaSet">The schema set.</param> /// <returns>Sequence containing all properties.</returns> /// <exception cref="ArgumentNullException">The <paramref name="type"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="schema"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="schemaSet"/> is <c>null</c>.</exception> private static XmlSchemaSequence GetPropertiesSequence(Type type, XmlSchema schema, XmlSchemaSet schemaSet) { Argument.IsNotNull("type", type); Argument.IsNotNull("schema", schema); Argument.IsNotNull("schemaSet", schemaSet); var propertiesSequence = new XmlSchemaSequence(); if (typeof(ModelBase).IsAssignableFromEx(type)) { // TODO: Update to latest serialization engine var typeNs = GetTypeNamespaceForSchema(type); var propertyDataManager = new PropertyDataManager(); var catelTypeInfo = propertyDataManager.GetCatelTypeInfo(type); var properties = (from propertyDefinition in catelTypeInfo.GetCatelProperties() where propertyDefinition.Value.IncludeInSerialization orderby propertyDefinition.Value.Name select propertyDefinition); foreach (var property in properties) { var propertyDefinition = property.Value; var propertySchemaElement = new XmlSchemaElement(); propertySchemaElement.Name = propertyDefinition.Name; if (propertyDefinition.Type.ImplementsInterfaceEx(typeof(IEnumerable)) && propertyDefinition.Type != typeof(string)) { propertySchemaElement.SchemaTypeName = new XmlQualifiedName(string.Format("{0}", propertyDefinition.Name), typeNs); var collectionPropertyType = new XmlSchemaComplexType(); collectionPropertyType.Name = string.Format("{0}", propertyDefinition.Name); schema.Items.Add(collectionPropertyType); foreach (var genericArgument in propertyDefinition.Type.GetGenericArguments()) { AddTypeToSchemaSet(genericArgument, schemaSet); } } else { propertySchemaElement.SchemaTypeName = AddTypeToSchemaSet(propertyDefinition.Type, schemaSet); propertySchemaElement.IsNillable = IsNullableType(propertyDefinition.Type); propertySchemaElement.MinOccurs = 0; } propertiesSequence.Items.Add(propertySchemaElement); } } return propertiesSequence; }