public CsdlSemanticsStringTypeReference(CsdlSemanticsSchema schema, CsdlStringTypeReference reference) : base(schema, reference) { }
public void ParseCsdlEntityTypeWithMembersWorksAsExpected() { string json = @"""Supplier"": { ""$Kind"": ""EntityType"", ""$Key"": [ ""ID"" ], ""ID"": {}, ""Name"": { ""$Nullable"": true }, ""Address"": { ""$Type"": ""self.Address"" }, ""Concurrency"": { ""$Type"": ""Edm.Int32"" }, ""Products"": { ""$Kind"": ""NavigationProperty"", ""$Partner"": ""Supplier"", ""$Collection"": true, ""$Type"": ""self.Product"" } }"; CsdlEntityType entityType = ParseCsdlSchemaElement(json, SchemaJsonParser.ParseCsdlEntityType); Assert.NotNull(entityType); Assert.Equal("Supplier", entityType.Name); Assert.False(entityType.IsAbstract); Assert.False(entityType.IsOpen); Assert.Null(entityType.BaseTypeName); Assert.False(entityType.HasStream); CsdlPropertyReference propertyRef = Assert.Single(entityType.Key.Properties); Assert.Equal("ID", propertyRef.PropertyName); Assert.Equal(4, entityType.StructuralProperties.Count()); // ID CsdlProperty id = entityType.StructuralProperties.FirstOrDefault(p => p.Name == "ID"); Assert.NotNull(id); CsdlStringTypeReference stringType = Assert.IsType <CsdlStringTypeReference>(id.Type); Assert.False(stringType.IsUnbounded); Assert.Null(stringType.IsUnicode); Assert.Null(stringType.MaxLength); Assert.False(stringType.IsNullable); // Name CsdlProperty name = entityType.StructuralProperties.FirstOrDefault(p => p.Name == "Name"); Assert.NotNull(name); stringType = Assert.IsType <CsdlStringTypeReference>(name.Type); Assert.True(stringType.IsNullable); // Address CsdlProperty address = entityType.StructuralProperties.FirstOrDefault(p => p.Name == "Address"); Assert.NotNull(address); CsdlNamedTypeReference namedType = Assert.IsType <CsdlNamedTypeReference>(address.Type); Assert.Equal("self.Address", namedType.FullName); // Concurrency CsdlProperty concurrency = entityType.StructuralProperties.FirstOrDefault(p => p.Name == "Concurrency"); Assert.NotNull(concurrency); CsdlPrimitiveTypeReference primitiveType = Assert.IsType <CsdlPrimitiveTypeReference>(concurrency.Type); Assert.Equal(EdmPrimitiveTypeKind.Int32, primitiveType.Kind); Assert.False(primitiveType.IsNullable); // Products CsdlNavigationProperty products = Assert.Single(entityType.NavigationProperties); Assert.Equal("Products", products.Name); Assert.Equal("Collection(self.Product)", products.Type); Assert.Equal("Supplier", products.PartnerPath.Path); }