public void ReturnsNoPropertiesForOpenGenericTypes()
            {
                var propertyDataManager = new PropertyDataManager();
                var catelTypeInfo       = propertyDataManager.GetCatelTypeInfo(typeof(GenericClass <>));

                Assert.AreEqual(0, catelTypeInfo.GetCatelProperties().Count);
            }
Example #2
0
            public void ThrowsPropertyAlreadyRegisteredExceptionForDoubleRegistration()
            {
                var propertyDataManager = new PropertyDataManager();

                RegisterProperty(propertyDataManager, "stringProperty", "defaultValue");
                ExceptionTester.CallMethodAndExpectException <PropertyAlreadyRegisteredException>(() => RegisterProperty(propertyDataManager, "stringProperty", "defaultValue"));
            }
Example #3
0
        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);
            }
Example #9
0
            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());
            }
Example #10
0
        /// <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);
        }
Example #11
0
            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"));
            }
Example #16
0
        /// <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;
        }