public void Invalid_CastTests(string path) { // Arrange EdmModel model = new EdmModel(); EdmEntityContainer container = new EdmEntityContainer("NS", "Container"); var vehicle = new EdmEntityType("NS", "Vehicle"); var car = new EdmEntityType("NS", "Car", vehicle); var motorcycle = new EdmEntityType("NS", "Motorcycle", vehicle); model.AddElements(new IEdmSchemaElement[] { vehicle, car, motorcycle, container }); container.AddEntitySet("Vehicles", vehicle); container.AddEntitySet("Cars", car); container.AddEntitySet("Motorcycles", motorcycle); // Act var exception = Assert.Throws<ODataException>(() => _parser.Parse(model, path)); Assert.Contains("Invalid cast encountered.", exception.Message); }
[InlineData("Cars/NS.Vehicle/WashMultiple", "WashMultiple", "Collection([NS.Vehicle Nullable=False])")] // downcast public void ActionOverloadResoultionTests(string path, string actionName, string expectedEntityBound) { // Arrange EdmModel model = new EdmModel(); EdmEntityContainer container = new EdmEntityContainer("NS", "Container"); var vehicle = new EdmEntityType("NS", "Vehicle"); var car = new EdmEntityType("NS", "Car", vehicle); var motorcycle = new EdmEntityType("NS", "Motorcycle", vehicle); model.AddElements(new IEdmSchemaElement[] { vehicle, car, motorcycle, container }); var washVehicle = AddBindableAction(container, "Wash", vehicle, isCollection: false); var washCar = AddBindableAction(container, "Wash", car, isCollection: false); var washVehicles = AddBindableAction(container, "WashMultiple", vehicle, isCollection: true); var washCars = AddBindableAction(container, "WashMultiple", car, isCollection: true); container.AddEntitySet("Vehicles", vehicle); container.AddEntitySet("Cars", car); container.AddEntitySet("Motorcycles", motorcycle); // Act ODataPath odataPath = _parser.Parse(model, path); // Assert Assert.NotNull(odataPath); ActionPathSegment actionSegment = Assert.IsType<ActionPathSegment>(odataPath.Segments.Last()); Assert.Equal("NS.Container." + actionName, actionSegment.ActionName); Assert.Equal(expectedEntityBound, actionSegment.Action.Parameters.First().Type.Definition.ToTraceString()); }
public void CastTests(string path, string expectedEdmType) { // Arrange EdmModel model = new EdmModel(); EdmEntityContainer container = new EdmEntityContainer("NS", "Container"); var vehicle = new EdmEntityType("NS", "Vehicle"); var car = new EdmEntityType("NS", "Car", vehicle); var motorcycle = new EdmEntityType("NS", "Motorcycle", vehicle); model.AddElements(new IEdmSchemaElement[] { vehicle, car, motorcycle, container }); container.AddEntitySet("Vehicles", vehicle); container.AddEntitySet("Cars", car); container.AddEntitySet("Motorcycles", motorcycle); // Act ODataPath odataPath = _parser.Parse(model, path); // Assert Assert.NotNull(odataPath); Assert.Equal(expectedEdmType, odataPath.EdmType.ToTraceString()); }