public void ParsingNavigationWithZeroOrOneMultiplicityContainmentEndCsdl()
        {
            var csdls = NavigationTestModelBuilder.NavigationWithZeroOrOneMultiplicityContainmentEndCsdl();
            var model = this.GetParserResult(csdls);

            this.CheckNavigationWithMultiplicityContainmentEnd(model, EdmMultiplicity.ZeroOrOne);
        }
        public void ParsingDerivedContainmentNavigationWithDerivedAssociationSetCsdl()
        {
            var csdls = NavigationTestModelBuilder.DerivedContainmentNavigationWithDerivedAssociationSetCsdl();
            var model = this.GetParserResult(csdls);

            this.CheckEntityTypeNavigationCount(model, "NS.Person", 1);
            this.CheckEntityTypeNavigationCount(model, "NS.Employee", 2);
            this.CheckEntityTypeNavigationCount(model, "NS.Home", 1);
            this.CheckEntityTypeNavigationCount(model, "NS.Office", 2);

            var personToHome = model.FindEntityType("NS.Person").NavigationProperties().First();

            this.CheckNavigationContainment(personToHome, true, false);
            var homeToPerson = model.FindEntityType("NS.Home").NavigationProperties().First();

            this.CheckNavigationContainment(homeToPerson, false, true);
            this.CheckNavigationsArePartners(personToHome, homeToPerson);

            var employeeToOffice = model.FindEntityType("NS.Employee").NavigationProperties().Where(n => n.Name.Equals("ToOffice")).First();

            this.CheckNavigationContainment(employeeToOffice, true, false);
            var officeToEmployee = model.FindEntityType("NS.Office").NavigationProperties().Where(n => n.Name.Equals("ToEmployee")).First();

            this.CheckNavigationContainment(officeToEmployee, false, true);
            this.CheckNavigationsArePartners(employeeToOffice, officeToEmployee);

            var container   = model.EntityContainer;
            var employeeSet = container.FindEntitySet("EmployeeSet");
            var officeSet   = container.FindEntitySet("OfficeSet");

            Assert.AreEqual(officeSet.FindNavigationTarget(homeToPerson), employeeSet, "Invalid entity set navigation target.");

            // Contained entity set is generated dynamically.
            // Assert.AreEqual(employeeSet.FindNavigationTarget(homeToPerson.Partner), officeSet, "Invalid entity set navigation target.");
        }
        public void ParsingNavigationWithValidZeroOrOneMultiplicityRecursiveContainmentEndCsdl()
        {
            var csdls = NavigationTestModelBuilder.NavigationWithValidZeroOrOneMultiplicityRecursiveContainmentEndCsdl();
            var model = this.GetParserResult(csdls);

            this.CheckEntityTypeNavigationCount(model, "NS.Person", 4);
            var personNavigations = model.FindEntityType("NS.Person").NavigationProperties();

            var personToFriend = personNavigations.Where(n => n.Name.Equals("ToFriend")).First();

            this.CheckNavigationContainment(personToFriend, false, true);
            this.CheckNavigationMultiplicity(personToFriend, EdmMultiplicity.Many, EdmMultiplicity.ZeroOrOne);

            var personToParent = personNavigations.Where(n => n.Name.Equals("ToParent")).First();

            this.CheckNavigationContainment(personToParent, false, true);
            this.CheckNavigationMultiplicity(personToParent, EdmMultiplicity.ZeroOrOne, EdmMultiplicity.ZeroOrOne);

            var friendToPerson = personNavigations.Where(n => n.Name.Equals("ToPerson")).First();

            this.CheckNavigationsArePartners(personToFriend, friendToPerson);

            var parentToPerson = personNavigations.Where(n => n.Name.Equals("ToSelf")).First();

            this.CheckNavigationsArePartners(personToParent, parentToPerson);
        }
        public void ParsingRecursiveThreeContainmentNavigationsCsdl()
        {
            var csdls = NavigationTestModelBuilder.RecursiveThreeContainmentNavigationsCsdl();
            var model = this.GetParserResult(csdls);

            this.CheckEntityTypeNavigationCount(model, "NS.Person", 2);
            this.CheckEntityTypeNavigationCount(model, "NS.Pet", 2);
            this.CheckEntityTypeNavigationCount(model, "NS.Home", 2);

            var personNavigations = model.FindEntityType("NS.Person").NavigationProperties();
            var petNavigations    = model.FindEntityType("NS.Pet").NavigationProperties();
            var homeNavigations   = model.FindEntityType("NS.Home").NavigationProperties();

            var personToPet = personNavigations.Where(n => n.Name.Equals("ToPet")).First();

            this.CheckNavigationContainment(personToPet, true, false);
            var petToPerson = petNavigations.Where(n => n.Name.Equals("ToPerson")).First();

            this.CheckNavigationsArePartners(personToPet, petToPerson);

            var homeToPerson = homeNavigations.Where(n => n.Name.Equals("ToPerson")).First();

            this.CheckNavigationContainment(homeToPerson, true, false);
            var personToHome = personNavigations.Where(n => n.Name.Equals("ToHome")).First();

            this.CheckNavigationsArePartners(personToHome, homeToPerson);

            var petToHome = petNavigations.Where(n => n.Name.Equals("ToHome")).First();

            this.CheckNavigationContainment(petToHome, true, false);
            var homeToPet = homeNavigations.Where(n => n.Name.Equals("ToPet")).First();

            this.CheckNavigationsArePartners(petToHome, homeToPet);
        }
예제 #5
0
        public void ValidateContainmentNavigationWithDifferentEnds()
        {
            var model          = NavigationTestModelBuilder.ContainmentNavigationWithDifferentEnds();
            var expectedErrors = new EdmLibTestErrors();

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
        public void SerializeSingleSimpleContainmentNavigation()
        {
            var model = NavigationTestModelBuilder.SingleSimpleContainmentNavigation();
            var csdls = NavigationTestModelBuilder.SingleSimpleContainmentNavigationCsdl();

            this.SerializingValidator(model, csdls);
        }
예제 #7
0
        public void ValidateRecursiveOneContainmentNavigationSelfPointingEntitySet()
        {
            var model          = NavigationTestModelBuilder.RecursiveOneContainmentNavigationSelfPointingEntitySet();
            var expectedErrors = new EdmLibTestErrors();

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
        public void SerializeDerivedContainmentNavigationWithDerivedAndBaseAssociationSet()
        {
            var model = NavigationTestModelBuilder.DerivedContainmentNavigationWithDerivedAndBaseAssociationSet();
            var csdls = NavigationTestModelBuilder.DerivedContainmentNavigationWithDerivedAndBaseAssociationSetCsdl();

            this.SerializingValidator(model, csdls);
        }
예제 #9
0
        public void ValidateDerivedContainmentNavigationWithDerivedAndBaseAssociationSet()
        {
            var model          = NavigationTestModelBuilder.DerivedContainmentNavigationWithDerivedAndBaseAssociationSet();
            var expectedErrors = new EdmLibTestErrors();

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #10
0
        public void SerializeNavigationWithBothContainmentEnd()
        {
            var model = NavigationTestModelBuilder.NavigationWithBothContainmentEnds();
            var csdls = NavigationTestModelBuilder.NavigationWithBothContainmentEndsCsdl();

            this.SerializingValidator(model, csdls);
        }
예제 #11
0
        public void SerializeTwoContainmentNavigationWithSameEndAddedDifferently()
        {
            var model = NavigationTestModelBuilder.TwoContainmentNavigationWithSameEndAddedDifferently();
            var csdls = NavigationTestModelBuilder.TwoContainmentNavigationWithSameEndCsdl();

            this.SerializingValidator(model, csdls);
        }
        public void ParsingNavigationWithManyMultiplicityRecursiveContainmentEndCsdl()
        {
            var csdls = NavigationTestModelBuilder.NavigationWithManyMultiplicityRecursiveContainmentEndCsdl();
            var model = this.GetParserResult(csdls);

            this.CheckNavigationWithMultiplicityRecursiveContainmentEnd(model, EdmMultiplicity.Many);
        }
예제 #13
0
        public void SerializeMultiBindingForOneNavigationProperty()
        {
            var model = NavigationTestModelBuilder.MultiNavigationBindingModel();
            var csdl  = NavigationTestModelBuilder.MultiNavigationBindingModelCsdl();

            this.SerializingValidator(model, csdl);
        }
예제 #14
0
        public void ValidateSingleSimpleContainmentNavigation()
        {
            var model          = NavigationTestModelBuilder.SingleSimpleContainmentNavigation();
            var expectedErrors = new EdmLibTestErrors();

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #15
0
        public void SerializeRecursiveThreeContainmentNavigations()
        {
            var model = NavigationTestModelBuilder.RecursiveThreeContainmentNavigations();
            var csdls = NavigationTestModelBuilder.RecursiveThreeContainmentNavigationsCsdl();

            this.SerializingValidator(model, csdls);
        }
예제 #16
0
        public void SerializeRecursiveOneContainmentNavigationWithTwoEntitySet()
        {
            var model = NavigationTestModelBuilder.RecursiveOneContainmentNavigationWithTwoEntitySet();
            var csdls = NavigationTestModelBuilder.RecursiveOneContainmentNavigationWithTwoEntitySetCsdl();

            this.SerializingValidator(model, csdls);
        }
예제 #17
0
        public void ValidateNavigationWithValidMultiplicityRecursiveContainmentEnd()
        {
            var model          = NavigationTestModelBuilder.NavigationWithValidZeroOrOneMultiplicityRecursiveContainmentEnd();
            var expectedErrors = new EdmLibTestErrors();

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #18
0
        public void SerializeNavigationWithManyMultiplicityRecursiveContainmentEnd()
        {
            var model = NavigationTestModelBuilder.NavigationWithManyMultiplicityRecursiveContainmentEnd();
            var csdls = NavigationTestModelBuilder.NavigationWithManyMultiplicityRecursiveContainmentEndCsdl();

            this.SerializingValidator(model, csdls);
        }
예제 #19
0
        public void ValidateDerivedContainmentNavigationWithDerivedAssociationSetCsdl()
        {
            var model          = this.GetParserResult(NavigationTestModelBuilder.DerivedContainmentNavigationWithDerivedAssociationSetCsdl());
            var expectedErrors = new EdmLibTestErrors();

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #20
0
        public void ValidateNavigationNonKeyPrincipalPropertyRefCsdl()
        {
            var expectedErrors = new EdmLibTestErrors();

            this.VerifySemanticValidation(NavigationTestModelBuilder.NavigationOneKeywithOneNonKeyPrincipalPropertyRefCsdl(), EdmVersion.V40, expectedErrors);
            this.VerifySemanticValidation(NavigationTestModelBuilder.NavigationTwoNonKeyPrincipalPropertyRefCsdl(), EdmVersion.V40, expectedErrors);
            this.VerifySemanticValidation(NavigationTestModelBuilder.NavigationOneNonKeyPrincipalPropertyRefCsdl(), EdmVersion.V40, expectedErrors);
        }
예제 #21
0
        public void ValidateNavigationZeroOnePrincipalWithNotNullableDependentCsdl()
        {
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.InvalidMultiplicityOfPrincipalEnd }
            };

            this.VerifySemanticValidation(NavigationTestModelBuilder.NavigationZeroOnePrincipalWithNotNullableDependentCsdl(), EdmVersion.V40, expectedErrors);
        }
예제 #22
0
        public void ValidateNavigationDuplicateReferentialConstraintCsdl()
        {
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.DuplicateDependentProperty }
            };

            this.VerifySemanticValidation(NavigationTestModelBuilder.NavigationDuplicateReferentialConstraintCsdl(), EdmVersion.V40, expectedErrors);
        }
예제 #23
0
        public void ValidateRecursiveOneContainmentNavigationInheritedSelfPointingEntitySet()
        {
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.EntitySetRecursiveNavigationPropertyMappingsMustPointBackToSourceEntitySet }
            };
            var model = NavigationTestModelBuilder.RecursiveOneContainmentNavigationInheritedSelfPointingEntitySet();

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #24
0
        public void ValidateTwoContainmentNavigationWithSameEndAddedDifferently()
        {
            var model          = NavigationTestModelBuilder.TwoContainmentNavigationWithSameEndAddedDifferently();
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.EntitySetCanOnlyBeContainedByASingleNavigationProperty }
            };

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #25
0
        public void ValidateNavigationWithInvaliZeroOrOnedMultiplicityRecursiveContainmentEnd()
        {
            var model          = NavigationTestModelBuilder.NavigationWithInvaliZeroOrOnedMultiplicityRecursiveContainmentEnd();
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.NavigationPropertyWithRecursiveContainmentTargetMustBeOptional }
            };

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #26
0
        public void ValidateNavigationPrincipalPropertyRefDoesNotCorrespondToDependentPropertyRefCsdl()
        {
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.TypeMismatchRelationshipConstraint },
                { null, null, EdmErrorCode.TypeMismatchRelationshipConstraint }
            };

            this.VerifySemanticValidation(NavigationTestModelBuilder.NavigationPrincipalPropertyRefDoesNotCorrespondToDependentPropertyRefCsdl(), EdmVersion.V40, expectedErrors);
        }
예제 #27
0
        public void ValidateNavigationZeroOnePrincipalWithAllNullableKeyDependentModel()
        {
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.InvalidKey },
                { null, null, EdmErrorCode.InvalidKey }
            };

            this.VerifySemanticValidation(NavigationTestModelBuilder.NavigationZeroOnePrincipalWithAllNullableKeyDependentModel(), EdmVersion.V40, expectedErrors);
        }
예제 #28
0
        public void ValidateNavigationWithEmptyNameModel()
        {
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.InvalidName }
            };

            var model = NavigationTestModelBuilder.NavigationWithEmptyNameModel();

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #29
0
        public void ValidateNavigationWithBothContainmentEnds()
        {
            var model          = NavigationTestModelBuilder.NavigationWithBothContainmentEnds();
            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.NavigationPropertyEntityMustNotIndirectlyContainItself },
                { null, null, EdmErrorCode.NavigationPropertyEntityMustNotIndirectlyContainItself }
            };

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }
예제 #30
0
        public void ValidateNavigationPropertyOfCollectionTypeTargetToSingleton()
        {
            var model = NavigationTestModelBuilder.NavigationPropertyOfCollectionTypeTargetToSingleton();

            var expectedErrors = new EdmLibTestErrors()
            {
                { null, null, EdmErrorCode.NavigationPropertyOfCollectionTypeMustNotTargetToSingleton },
            };

            this.VerifySemanticValidation(model, EdmVersion.V40, expectedErrors);
        }