Ejemplo n.º 1
0
        public void Create_sets_properties_and_seals_MetadataProperty()
        {
            var typeUsage        = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
            var metadataProperty = MetadataProperty.Create("property", typeUsage, "value");

            Assert.Equal("property", metadataProperty.Name);
            Assert.Same(typeUsage, metadataProperty.TypeUsage);
            Assert.Equal("value", metadataProperty.Value);
            Assert.True(metadataProperty.IsReadOnly);
        }
        private static void EdmSerializationVisitor_writes_expected_xml <T>(
            Func <T> constructor,
            bool invalid,
            Action <EdmSerializationVisitor, T> visitAction,
            string expectedFormat)
            where T : MetadataItem
        {
            var errors = new List <EdmSchemaError>()
            {
                new EdmSchemaError("Message1.", 1, EdmSchemaErrorSeverity.Error),
                new EdmSchemaError("Message2.", 2, EdmSchemaErrorSeverity.Warning)
            };

            var typeUsage1 = TypeUsage.CreateDefaultTypeUsage(
                PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Boolean));
            var property1 = MetadataProperty.Create(
                MetadataItemHelper.SchemaInvalidMetadataPropertyName, typeUsage1, invalid);

            var typeUsage2 = TypeUsage.CreateDefaultTypeUsage(
                PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String).GetCollectionType());
            var property2 = MetadataProperty.Create(
                MetadataItemHelper.SchemaErrorsMetadataPropertyName, typeUsage2, errors);

            var item = constructor();

            item.AddMetadataProperties(new List <MetadataProperty>()
            {
                property1, property2
            });

            var builder  = new StringBuilder();
            var settings = new XmlWriterSettings {
                ConformanceLevel = ConformanceLevel.Fragment
            };

            using (var writer = XmlWriter.Create(builder, settings))
            {
                visitAction(new EdmSerializationVisitor(writer, 3.0), item);
            }

            var errorsString = String.Concat(
                Strings.MetadataItemErrorsFoundDuringGeneration,
                errors[0].ToString(),
                errors[1].ToString());

            var expectedXml = String.Format(
                CultureInfo.InvariantCulture,
                expectedFormat,
                errorsString);

            AssertEqual(expectedXml, builder.ToString());
        }
Ejemplo n.º 3
0
            public void Contains_is_implemented()
            {
                var typeUsage    = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
                var metadataItem = new EntityType("E", "N", DataSpace.CSpace);
                var annotation   = MetadataProperty.CreateAnnotation("AN", "AV");

                metadataItem.MetadataProperties.Source.Add(MetadataProperty.Create("PN", typeUsage, "PV"));

                Assert.False(metadataItem.Annotations.Contains(annotation));

                metadataItem.Annotations.Add(annotation);

                Assert.True(metadataItem.Annotations.Contains(annotation));
            }
Ejemplo n.º 4
0
            public void Add_is_implemented()
            {
                var typeUsage    = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
                var metadataItem = new EntityType("E", "N", DataSpace.CSpace);

                metadataItem.MetadataProperties.Source.Add(MetadataProperty.Create("PN", typeUsage, "PV"));
                var count = metadataItem.MetadataProperties.Count;

                var annotation = MetadataProperty.CreateAnnotation("AN", "AV");

                metadataItem.Annotations.Add(annotation);

                Assert.Same(annotation, metadataItem.MetadataProperties.ElementAt(count));
                Assert.Same(annotation, metadataItem.Annotations.Single());
            }
Ejemplo n.º 5
0
            public void Count_is_implemented()
            {
                var typeUsage    = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
                var metadataItem = new EntityType("E", "N", DataSpace.CSpace);

                metadataItem.MetadataProperties.Source.Add(MetadataProperty.Create("PN", typeUsage, "PV"));

                var count = metadataItem.MetadataProperties.Count;

                Assert.Equal(0, metadataItem.Annotations.Count);

                metadataItem.Annotations.Add(MetadataProperty.CreateAnnotation("AN", "AV"));

                Assert.Equal(count + 1, metadataItem.MetadataProperties.Count);
                Assert.Equal(1, metadataItem.Annotations.Count);
            }
Ejemplo n.º 6
0
        public void SetMetadataProperties_sets_metadata_properties()
        {
            var typeUsage =
                TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));

            var property = EdmProperty.Create("foo", typeUsage);

            property.SetMetadataProperties(
                new List <MetadataProperty>
            {
                MetadataProperty.Create(
                    "foo", TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)), "bar")
            });

            Assert.NotNull(property.MetadataProperties.SingleOrDefault(p => p.Name == "foo" && (string)p.Value == "bar"));
        }
Ejemplo n.º 7
0
            public void CopyTo_is_implemented()
            {
                var typeUsage    = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
                var metadataItem = new EntityType("E", "N", DataSpace.CSpace);
                var annotation1  = MetadataProperty.CreateAnnotation("AN1", "AV1");
                var annotation2  = MetadataProperty.CreateAnnotation("AN2", "AV2");

                metadataItem.MetadataProperties.Source.Add(MetadataProperty.Create("PN", typeUsage, "PV"));
                metadataItem.Annotations.Add(annotation1);
                metadataItem.Annotations.Add(annotation2);

                var annotations = new MetadataProperty[2];

                metadataItem.Annotations.CopyTo(annotations, 0);

                Assert.Same(annotation1, annotations[0]);
                Assert.Same(annotation2, annotations[1]);
            }
Ejemplo n.º 8
0
            public void GetEnumerator_is_implemented()
            {
                var typeUsage    = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
                var metadataItem = new EntityType("E", "N", DataSpace.CSpace);
                var annotation1  = MetadataProperty.CreateAnnotation("AN1", "AV1");
                var annotation2  = MetadataProperty.CreateAnnotation("AN2", "AV2");

                metadataItem.MetadataProperties.Source.Add(MetadataProperty.Create("PN", typeUsage, "PV"));
                metadataItem.Annotations.Add(annotation1);
                metadataItem.Annotations.Add(annotation2);

                var enumerator = metadataItem.Annotations.GetEnumerator();

                Assert.True(enumerator.MoveNext());
                Assert.Same(annotation1, enumerator.Current);
                Assert.True(enumerator.MoveNext());
                Assert.Same(annotation2, enumerator.Current);
                Assert.False(enumerator.MoveNext());
            }
Ejemplo n.º 9
0
            public void Remove_is_implemented()
            {
                var typeUsage    = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
                var metadataItem = new EntityType("E", "N", DataSpace.CSpace);
                var annotation   = MetadataProperty.CreateAnnotation("AN", "AV");

                metadataItem.MetadataProperties.Source.Add(MetadataProperty.Create("PN", typeUsage, "PV"));
                metadataItem.Annotations.Add(annotation);
                var count = metadataItem.MetadataProperties.Count;

                Assert.Equal(1, metadataItem.Annotations.Count);

                metadataItem.Annotations.Remove(annotation);

                Assert.Equal(count - 1, metadataItem.MetadataProperties.Count);
                Assert.Equal(0, metadataItem.Annotations.Count);
                foreach (var p in metadataItem.MetadataProperties)
                {
                    Assert.False(p.IsAnnotation);
                }
            }
Ejemplo n.º 10
0
        public void Validation_error_not_reported_for_types_marked_as_invalid()
        {
            var invalidAttribute =
                MetadataProperty.Create(
                    "EdmSchemaInvalid",
                    TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)),
                    true);

            var model = new EdmModel(DataSpace.SSpace);

            model.AddItem(
                EntityType.Create("E", "N", DataSpace.SSpace, new string[0], new EdmMember[0], new[] { invalidAttribute }));

            using (var writer = XmlWriter.Create(new StringBuilder()))
            {
                var ssdlSerializer = new SsdlSerializer();
                ssdlSerializer.OnError += (_, e) => { throw new Exception("Should not be invoked."); };

                Assert.True(ssdlSerializer.Serialize(model, "N", "invName", "42", writer));
            }
        }
Ejemplo n.º 11
0
        public void Can_create_enumeration_type()
        {
            var stringTypeUsage  = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
            var metadataProperty = MetadataProperty.Create("MetadataProperty", stringTypeUsage, "Value");
            var underlyingType   = PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32);
            var members
                = new[]
                {
                EnumMember.Create("M1", 1, null),
                EnumMember.Create("M2", 2, null)
                };

            var enumType = EnumType.Create("EnumName", "N", underlyingType, true, members, new[] { metadataProperty });

            Assert.Equal("EnumName", enumType.Name);
            Assert.Equal("N", enumType.NamespaceName);
            Assert.True(enumType.IsFlags);
            Assert.Equal(DataSpace.CSpace, enumType.DataSpace);
            Assert.Equal(members, enumType.Members);
            Assert.Same(metadataProperty, enumType.MetadataProperties.Last());
            Assert.True(enumType.IsReadOnly);
        }