예제 #1
0
        public void ParseNoNamespace()
        {
            var csdl =
@"<Schema Namespace=""NS1"">
    <EntityContainer Name=""C1"">
        <EntitySet Name=""Customers"" EntityType=""NS1.Customer"" />
    </EntityContainer>
    <EntityType Name=""Customer"">
        <Key>
            <PropertyRef Name=""CustomerID"" />
        </Key>
        <Property Name=""CustomerID"" Type=""String"" Nullable=""false"" />
    </EntityType>
</Schema>";
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = CsdlReader.TryParse(new XmlReader[] { XmlReader.Create(new StringReader(csdl)) }, out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.UnexpectedXmlElement, "XmlParser_UnexpectedRootElementNoNamespace"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #2
0
        public void EdmxRoundTripTestsInvalidConceptualModelNamespaceEdmx()
        {
            var errors = new ExpectedEdmErrors()
            {
                { EdmErrorCode.UnexpectedXmlElement, "XmlParser_UnexpectedRootElementWrongNamespace" }
            };

            this.EdmxCheckForErrors(EdmxModelBuilder.InvalidConceptualModelNamespaceEdmx(), errors);
        }
예제 #3
0
        public void EdmxRoundTripTestsInvalidNamespaceAndVersionEdmx()
        {
            var errors = new ExpectedEdmErrors()
            {
                { EdmErrorCode.InvalidVersionNumber, "EdmxParser_EdmxVersionMismatch" }
            };

            this.EdmxCheckForErrors(EdmxModelBuilder.NonMatchingNamespaceAndVersionEdmx(), errors);
        }
예제 #4
0
        public void EdmxRoundTripTwoRuntimeEdmx()
        {
            var errors = new ExpectedEdmErrors()
            {
                { EdmErrorCode.UnexpectedXmlElement, "EdmxParser_BodyElement" }
            };

            this.EdmxCheckForErrors(EdmxModelBuilder.TwoRuntimeEdmx(), errors);
        }
예제 #5
0
        public void EdmxRoundTripTestsInvalidDataServicesEdmx()
        {
            var errors = new ExpectedEdmErrors()
            {
                { EdmErrorCode.UnexpectedXmlElement, "XmlParser_UnexpectedRootElementNoNamespace" }
            };

            this.EdmxCheckForErrors(EdmxModelBuilder.InvalidDataServicesEdmx(), errors);
        }
예제 #6
0
        public void EdmxRoundTripTestsInvalidConceptualModelNamespaceEdmx()
        {
            var errors = new ExpectedEdmErrors()
            {
                { EdmErrorCode.UnexpectedXmlElement, "XmlParser_UnexpectedRootElementWrongNamespace" }
            };

            this.EdmxCheckForErrors(EdmxModelBuilder.InvalidConceptualModelNamespaceEdmx(), errors);
        }
예제 #7
0
        public void EdmxRoundTripTestsInvalidNamespaceAndVersionEdmx()
        {
            var errors = new ExpectedEdmErrors()
            {
                { EdmErrorCode.InvalidVersionNumber, "EdmxParser_EdmxVersionMismatch" }
            };

            this.EdmxCheckForErrors(EdmxModelBuilder.NonMatchingNamespaceAndVersionEdmx(), errors);
        }
예제 #8
0
        public void EdmxRoundTripTestsInvalidDataServicesEdmx()
        {
            var errors = new ExpectedEdmErrors()
            {
                { EdmErrorCode.UnexpectedXmlElement, "XmlParser_UnexpectedRootElementNoNamespace" }
            };

            this.EdmxCheckForErrors(EdmxModelBuilder.InvalidDataServicesEdmx(), errors);
        }
예제 #9
0
        public void EdmxRoundTripTwoDataServicesEdmx()
        {
            var errors = new ExpectedEdmErrors()
            {
                { EdmErrorCode.UnexpectedXmlElement, "EdmxParser_BodyElement" }
            };

            this.EdmxCheckForErrors(EdmxModelBuilder.TwoDataServicesEdmx(), errors);
        }
예제 #10
0
        public void ParseEmptyFile()
        {
            var csdl = @"";
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ConformanceLevel = ConformanceLevel.Fragment;
            XmlReader foo = XmlReader.Create(new StringReader(csdl), settings);
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = CsdlReader.TryParse(new XmlReader[] { foo }, out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.EmptyFile, "XmlParser_EmptyFile"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #11
0
        public void ParseMissingTypeAttributeOrElementTest()
        {
            var csdl =
@"<Schema Namespace=""DefaultNamespace"" xmlns=""http://docs.oasis-open.org/odata/ns/edm"">
      <Action Name=""FunctionImportsWithReturnTypePrimitiveDataType1""><ReturnType Type=""Edm.Binary""/>
        <Parameter Name=""PrimitiveParameter1"" />
      </Action>
      <EntityContainer Name=""MyContainer"">
        <ActionImport Name=""FunctionImportsWithReturnTypePrimitiveDataType1"" Action=""DefaultNamespace.FunctionImportsWithReturnTypePrimitiveDataType1"" />
      </EntityContainer>
</Schema>";
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = CsdlReader.TryParse(new XmlReader[] { XmlReader.Create(new StringReader(csdl)) }, out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.MissingType, "CsdlParser_MissingTypeAttributeOrElement"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #12
0
        public void ParseIfExpressionTooFewOperands()
        {
            const string csdl =
@"<?xml version=""1.0"" encoding=""utf-16""?>
<Schema Namespace=""foo"" xmlns=""http://docs.oasis-open.org/odata/ns/edm"">
  <EntityType Name=""Person"">
    <Key>
      <PropertyRef Name=""Name"" />
    </Key>
    <Property Name=""Name"" Type=""Edm.String"" Nullable=""false"" />
    <Property Name=""Birthday"" Type=""Edm.DateTimeOffset"" />
    <Annotation Term=""Funk.RC"">
      <If>
        <Bool>true</Bool>
        <Int>123</Int>
      </If>
    </Annotation>
  </EntityType>
</Schema>";

            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = CsdlReader.TryParse(new XmlReader[] { XmlReader.Create(new StringReader(csdl)) }, out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.InvalidIfExpressionIncorrectNumberOfOperands, "CsdlParser_InvalidIfExpressionIncorrectNumberOfOperands"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #13
0
        public void ParseUnexpectedElement_ValueAnnotation()
        {
            var csdl =
@"<Schema Namespace=""NS1"" xmlns=""http://docs.oasis-open.org/odata/ns/edm"">
  <EntityType Name=""Customer"">
    <Annotation Term=""foo.Person"">
      <PropertyValue Property=""foo"" String=""zippy"" />
    </Annotation>
  </EntityType>
</Schema>";
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = CsdlReader.TryParse(new XmlReader[] { XmlReader.Create(new StringReader(csdl)) }, out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.UnexpectedXmlElement, "XmlParser_UnusedElement"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #14
0
        public void EdmxParseUnexpectedAttribute()
        {
            var edmx =
@"<?xml version=""1.0"" encoding=""utf-16""?>
<edmx:Edmx Version=""4.0"" xmlns:edmx=""http://docs.oasis-open.org/odata/ns/edmx"">
    <edmx:DataServices>
    <Schema Namespace=""NS1"" xmlns=""http://docs.oasis-open.org/odata/ns/edm"">
        <EntityContainer Name=""C1"" UNEXPECTED=""hello"">
            <EntitySet Name=""Customers"" EntityType=""NS1.Customer"" />
        </EntityContainer>
        <EntityType Name=""Customer"">
            <Key>
                <PropertyRef Name=""CustomerID"" />
            </Key>
            <Property Name=""CustomerID"" Type=""String"" Nullable=""false"" />
        </EntityType>
    </Schema>
    </edmx:DataServices>
</edmx:Edmx>";
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = EdmxReader.TryParse(XmlReader.Create(new StringReader(edmx)), out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.UnexpectedXmlAttribute, "XmlParser_UnexpectedAttribute"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #15
0
        public void EntitySetRequiredAttributeWithEmptyText()
        {
            var csdl =
@"<Schema Namespace=""NS1"" xmlns=""http://docs.oasis-open.org/odata/ns/edm"">
    <EntityContainer Name=""C1"">
        <EntitySet Name="""" EntityType=""NS1.Customer"" >
        </EntitySet>
    </EntityContainer>
    <EntityType Name=""Customer"">
        <Key>
            <PropertyRef Name=""CustomerID"" />
        </Key>
        <Property Name=""CustomerID"" Type=""String"" Nullable=""false"" />
    </EntityType>
</Schema>";
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = CsdlReader.TryParse(new XmlReader[] { XmlReader.Create(new StringReader(csdl)) }, out model, out errors);

            Assert.IsTrue(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #16
0
        public void ParseUnexpectedText()
        {
            var csdl =
@"<Schema Namespace=""NS1"" xmlns=""http://docs.oasis-open.org/odata/ns/edm"">
    <EntityContainer Name=""C1"">
        <EntitySet Name=""Customers"" EntityType=""NS1.Customer"" >
        UNEXPECTED TEXT!!!
        </EntitySet>
    </EntityContainer>
    <EntityType Name=""Customer"">
        <Key>
            <PropertyRef Name=""CustomerID"" />
        </Key>
        <Property Name=""CustomerID"" Type=""String"" Nullable=""false"" />
    </EntityType>
</Schema>";
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = CsdlReader.TryParse(new XmlReader[] { XmlReader.Create(new StringReader(csdl)) }, out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.TextNotAllowed, "XmlParser_TextNotAllowed"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #17
0
        public void EdmxParseUnexpectedNamespace()
        {
            var edmx = @"<edmx:Edmx xmlns:edmx=""http://BorkBorkBork""/>";
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ConformanceLevel = ConformanceLevel.Fragment;
            XmlReader foo = XmlReader.Create(new StringReader(edmx), settings);
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = EdmxReader.TryParse(foo, out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.UnexpectedXmlElement, "XmlParser_UnexpectedRootElement"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }
예제 #18
0
        public void ParseBadRootElement()
        {
            var csdl =
//invalid root element for namespace
@"<EntityContainer Name=""C1"" xmlns=""http://docs.oasis-open.org/odata/ns/edm"">
    <EntitySet Name=""Customers"" EntityType=""NS1.Customer"" />
</EntityContainer>
<EntityType Name=""Customer"">
    <Key>
        <PropertyRef Name=""CustomerID"" />
    </Key>
    <Property Name=""CustomerID"" Type=""String"" Nullable=""false"" />
</EntityType>";
            IEdmModel model;
            IEnumerable<EdmError> errors;
            bool parsed = CsdlReader.TryParse(new XmlReader[] { XmlReader.Create(new StringReader(csdl)) }, out model, out errors);

            Assert.IsFalse(parsed, "parsed");
            ExpectedEdmErrors expectedErrors = new ExpectedEdmErrors
            {
                {EdmErrorCode.UnexpectedXmlElement, "XmlParser_UnexpectedRootElement"},
            };
            ValidationVerificationHelper.Verify(expectedErrors, errors);
        }