public CsdlSemanticsTemporalTypeReference(CsdlSemanticsSchema schema, CsdlTemporalTypeReference reference) : base(schema, reference) { }
public void ParseCsdlOperationForFunctionWithMembersWorksAsExpected() { string json = @"""CreatedEntities"": [ { ""$Kind"": ""Function"", ""$Parameter"": [ { ""$Name"": ""before"", ""$Type"": ""Edm.DateTimeOffset"", ""$Nullable"": true, ""$Precision"": 10 }, { ""$Name"": ""after"", ""$Type"": ""Edm.DateTimeOffset"", ""$Precision"": 9 } ], ""$ReturnType"": { ""$Collection"": true, ""$Type"": ""Edm.EntityType"", ""$Nullable"": true }, ""$IsComposable"": true } ]"; IList <CsdlOperation> operations = ParseCsdlSchemaElement(json, SchemaJsonParser.TryParseCsdlOperationOverload); Assert.NotNull(operations); CsdlOperation operation = Assert.Single(operations); CsdlFunction function = Assert.IsType <CsdlFunction>(operation); Assert.Equal("CreatedEntities", function.Name); Assert.False(function.IsBound); Assert.True(function.IsComposable); Assert.Null(function.EntitySetPath); // Parameter Assert.Equal(2, function.Parameters.Count()); CsdlOperationParameter parameter = function.Parameters.First(c => c.Name == "before"); Assert.False(parameter.IsOptional); Assert.Null(parameter.DefaultValue); CsdlTemporalTypeReference temporalType = Assert.IsType <CsdlTemporalTypeReference>(parameter.Type); Assert.Equal(EdmPrimitiveTypeKind.DateTimeOffset, temporalType.Kind); Assert.True(temporalType.IsNullable); Assert.Equal(10, temporalType.Precision.Value); parameter = function.Parameters.First(c => c.Name == "after"); Assert.False(parameter.IsOptional); Assert.Null(parameter.DefaultValue); temporalType = Assert.IsType <CsdlTemporalTypeReference>(parameter.Type); Assert.Equal(EdmPrimitiveTypeKind.DateTimeOffset, temporalType.Kind); Assert.False(temporalType.IsNullable); Assert.Equal(9, temporalType.Precision.Value); // ReturnType Assert.NotNull(function.Return); CsdlExpressionTypeReference expTypeRef = Assert.IsType <CsdlExpressionTypeReference>(operation.Return.ReturnType); Assert.True(expTypeRef.IsNullable); CsdlNamedTypeReference namedType = Assert.IsType <CsdlNamedTypeReference>(Assert.IsType <CsdlCollectionType>(expTypeRef.TypeExpression).ElementType); Assert.True(namedType.IsNullable); // derived from collection Assert.Equal("Edm.EntityType", namedType.FullName); }