public void GetDefaultValueExpression_Works_ForTermFromCoreVocabularyModel()
        {
            // Arrange
            IEdmTerm term = CoreVocabularyModel.Instance.FindTerm("Org.OData.Core.V1.PositionalInsert");

            Assert.NotNull(term);
            Assert.NotNull(term.DefaultValue);
            Assert.Equal("true", term.DefaultValue);

            // Act
            IEdmExpression     exp      = term.GetDefaultValueExpression();
            EdmBooleanConstant constant = Assert.IsType <EdmBooleanConstant>(exp);

            Assert.True(constant.Value);
        }
Example #2
0
        /// <summary>
        /// Creates <see cref="IEdmVocabularyAnnotation"/> using the <see cref="IEdmTerm"/> and its default value.
        /// </summary>
        /// <param name="term">Term bound by the annotation.</param>
        /// <param name="target">Element the annotation applies to.</param>
        /// <param name="qualifier">Qualifier used to discriminate between multiple bindings of the same property or type.</param>
        /// <returns>The <see cref="IEdmVocabularyAnnotation"/> built.</returns>
        public static IEdmVocabularyAnnotation CreateVocabularyAnnotation(this IEdmTerm term, IEdmVocabularyAnnotatable target, string qualifier)
        {
            EdmUtil.CheckArgumentNull(term, "term");
            EdmUtil.CheckArgumentNull(target, "target");

            IEdmExpression value = term.GetDefaultValueExpression();

            if (value == null)
            {
                throw new InvalidOperationException(Strings.EdmVocabularyAnnotations_DidNotFindDefaultValue(term.Type));
            }

            return(new EdmVocabularyAnnotation(target, term, qualifier, value)
            {
                UseDefault = true
            });
        }