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); } }