Beispiel #1
0
        public void TestIsIndividualProperty()
        {
            string[] trueCases = new string[]
            {
                //  EntityType
                "People(2)/Name",
                "People(4)/Fully.Qualified.Namespace.Employee/Name",

                // Open EntityType
                "Paintings(0)/IAmOpenProperty",

                // EntityType With Multi keys
                "Lions(ID1=1,ID2=2)/AngerLevel",
                "Lions(ID1=1,ID2=2)/Fully.Qualified.Namespace.Lion/AngerLevel",

                // Singleton
                "Boss/Name",
                "Boss/Fully.Qualified.Namespace.Person/Name",

                // Containment
                "People(4)/Fully.Qualified.Namespace.Manager/MyContainedChimeras(Rid=2,Gid=00000000-0000-0000-0000-000000000003,Name='Chi7',Upgraded=false)/Fully.Qualified.Namespace.Chimera/Level",
                "People(1)/Fully.Qualified.Namespace.Manager/DirectReports(3)/MyContainedDog/Nicknames",

                // Complex Type
                "People(1)/MyAddress",
                "People(1)/MyAddress/Fully.Qualified.Namespace.Address",
                "People(1)/MyAddress/City",
                "People(1)/MyAddress/Fully.Qualified.Namespace.Address/City",
                "People(1)/MyAddress/Fully.Qualified.Namespace.Address/NextHome/Fully.Qualified.Namespace.Address",
            };

            string[] falseCases = new string[]
            {
                //  EntityType
                "People",
                "People(1)",
                "People(3)/Fully.Qualified.Namespace.Employee",

                // Open EntityType
                "Paintings",

                // EntityType With Multi keys
                "Lions(ID1=1,ID2=2)",
                "Lions(ID1=1,ID2=2)/Fully.Qualified.Namespace.Lion",

                // Singleton
                "Boss",
                "Boss/Fully.Qualified.Namespace.Person",

                // Containment
                "People(1)/MyContainedDog",
                "People(2)/MyContainedChimeras",
                "People(3)/MyContainedChimeras(Rid=1,Gid=00000000-0000-0000-0000-000000000001,Name='Chi1',Upgraded=true)",
                "People(4)/Fully.Qualified.Namespace.Manager/MyContainedChimeras(Rid=1,Gid=00000000-0000-0000-0000-000000000002,Name='Chi1',Upgraded=true)",
                "People(1)/Fully.Qualified.Namespace.Manager/DirectReports(3)/MyContainedDog",
            };

            foreach (var testCase in trueCases)
            {
                ODataPath path   = new ODataUriParser(HardCodedTestModel.TestModel, this.testBaseUri, new Uri(this.testBaseUri, testCase)).ParsePath();
                bool      result = path.IsIndividualProperty();
                result.Should().BeTrue("Resource path \"{0}\" should target at individual property", testCase);
            }

            foreach (var testCase in falseCases)
            {
                ODataPath path   = new ODataUriParser(HardCodedTestModel.TestModel, this.testBaseUri, new Uri(this.testBaseUri, testCase)).ParsePath();
                bool      result = path.IsIndividualProperty();
                result.Should().BeFalse("Resource path \"{0}\" should not target at individual property", testCase);
            }
        }