public void SingleServiceOperationSuccessfullyResolved() { var parameters = new string[] { }; IEdmOperationImport function; FunctionOverloadResolver.ResolveOperationImportFromList("GetCoolPeople", parameters, HardCodedTestModel.TestModel, out function, ODataUriResolver.Default).Should().BeTrue(); function.Should().BeSameAs(HardCodedTestModel.GetFunctionImportForGetCoolPeople()); }
public void ActionWithMultipleOverloadsForTheSameBindingParameter() { var model = ModelBuildingHelpers.GetModelWithIllegalActionOverloads(); var parameters = new string[] { }; IEdmOperationImport function; Action resolve = () => FunctionOverloadResolver.ResolveOperationImportFromList("Action", parameters, model, out function, ODataUriResolver.Default); resolve.ShouldThrow <ODataException>().WithMessage(ODataErrorStrings.FunctionOverloadResolver_MultipleActionImportOverloads("Action")); }
public void ModelWithMultipleOverloadedActionsShouldThrow() { var model = ModelBuildingHelpers.GetModelWithMixedActionsAndFunctionsWithSameName(); var parameters = new string[0]; IEdmOperationImport function; Action test = () => FunctionOverloadResolver.ResolveOperationImportFromList("Foo", parameters, model, out function, ODataUriResolver.Default); test.ShouldThrow <ODataException>().WithMessage(ODataErrorStrings.FunctionOverloadResolver_MultipleOperationImportOverloads("Foo")); }
public void SingleServiceOperationSuccessfullyResolved() { var parameters = new string[] { }; IEdmOperationImport function; var result = FunctionOverloadResolver.ResolveOperationImportFromList("GetCoolPeople", parameters, HardCodedTestModel.TestModel, out function, DefaultUriResolver); Assert.True(result); Assert.Same(HardCodedTestModel.GetFunctionImportForGetCoolPeople(), function); }
public void OverloadServiceOperationSuccessfullyResolved() { var model = new EdmModel(); // Add function without parameter. var int32TypeReference = EdmCoreModel.Instance.GetInt32(false); var functionWithoutParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); model.AddElement(functionWithoutParameter); // Add function with parameter. var functionWithParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); functionWithParameter.AddParameter("Parameter", int32TypeReference); model.AddElement(functionWithParameter); // Add function with two parameters. var functionWithTwoParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); functionWithTwoParameter.AddParameter("Parameter", int32TypeReference); functionWithTwoParameter.AddParameter("Parameter2", int32TypeReference); model.AddElement(functionWithTwoParameter); // Add function import. var container = new EdmEntityContainer("Fully.Qualified.Namespace", "Container"); model.AddElement(container); var functionImportWithoutParameter = container.AddFunctionImport("FunctionImport", functionWithoutParameter); var functionImportWithParameter = container.AddFunctionImport("FunctionImport", functionWithParameter); var functionImportWithTwoParameter = container.AddFunctionImport("FunctionImport", functionWithTwoParameter); IEdmOperationImport functionImport; // Resolve overload function import without parameter. var parameters = new string[] { }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, ODataUriResolver.Default).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithoutParameter); // Resolve overload function import with parameter. parameters = new string[] { "Parameter" }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, ODataUriResolver.Default).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithParameter); // Resolve overload function import with parameter. parameters = new string[] { "Parameter", "Parameter2" }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, ODataUriResolver.Default).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithTwoParameter); }
public void OverloadServiceOperationSuccessfullyResolved() { var model = new EdmModel(); // Add function without parameter. var int32TypeReference = EdmCoreModel.Instance.GetInt32(false); var functionWithoutParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); model.AddElement(functionWithoutParameter); // Add function with parameter. var functionWithParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); functionWithParameter.AddParameter("Parameter", int32TypeReference); model.AddElement(functionWithParameter); // Add function with two parameters. var functionWithTwoParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); functionWithTwoParameter.AddParameter("Parameter", int32TypeReference); functionWithTwoParameter.AddParameter("Parameter2", int32TypeReference); model.AddElement(functionWithTwoParameter); // Add function with two required and two optional parameters. var functionWithTwoRequiredOneOptionalParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); functionWithTwoRequiredOneOptionalParameter.AddParameter("Parameter", int32TypeReference); functionWithTwoRequiredOneOptionalParameter.AddParameter("Parameter2", int32TypeReference); functionWithTwoRequiredOneOptionalParameter.AddOptionalParameter("Parameter3", int32TypeReference); functionWithTwoRequiredOneOptionalParameter.AddOptionalParameter("Parameter4", int32TypeReference); model.AddElement(functionWithTwoRequiredOneOptionalParameter); // Add function with one required and one optional parameters. var functionWithOneRequiredOneOptionalParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); functionWithOneRequiredOneOptionalParameter.AddParameter("Parameter1", int32TypeReference); functionWithOneRequiredOneOptionalParameter.AddOptionalParameter("Parameter3", int32TypeReference); model.AddElement(functionWithOneRequiredOneOptionalParameter); // Add function with one required and two optional parameters. var functionWithOneRequiredTwoOptionalParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference); functionWithOneRequiredTwoOptionalParameter.AddParameter("Parameter1", int32TypeReference); functionWithOneRequiredTwoOptionalParameter.AddOptionalParameter("Parameter3", int32TypeReference); functionWithOneRequiredTwoOptionalParameter.AddOptionalParameter("Parameter4", int32TypeReference); model.AddElement(functionWithOneRequiredTwoOptionalParameter); // Add function with one required and two optional parameters. var functionWithOneRequiredThreeOptionalParameter = new EdmFunction("Fully.Qualified.Namespace", "Function", int32TypeReference, true, null, true); functionWithOneRequiredThreeOptionalParameter.AddParameter("BindingParameter", int32TypeReference); functionWithOneRequiredThreeOptionalParameter.AddParameter("Parameter1", int32TypeReference); functionWithOneRequiredThreeOptionalParameter.AddOptionalParameter("Parameter3", int32TypeReference); functionWithOneRequiredThreeOptionalParameter.AddOptionalParameter("Parameter4", int32TypeReference); functionWithOneRequiredThreeOptionalParameter.AddOptionalParameter("Parameter5", int32TypeReference); model.AddElement(functionWithOneRequiredThreeOptionalParameter); // Add function import. var container = new EdmEntityContainer("Fully.Qualified.Namespace", "Container"); model.AddElement(container); var functionImportWithoutParameter = container.AddFunctionImport("FunctionImport", functionWithoutParameter); var functionImportWithParameter = container.AddFunctionImport("FunctionImport", functionWithParameter); var functionImportWithTwoParameter = container.AddFunctionImport("FunctionImport", functionWithTwoParameter); var functionImportWithTwoRequiredOneOptionalParameter = container.AddFunctionImport("FunctionImport", functionWithTwoRequiredOneOptionalParameter); var functionImportWithOneRequiredOneOptionalParameter = container.AddFunctionImport("FunctionImport", functionWithOneRequiredOneOptionalParameter); var functionImportWithOneRequiredTwoOptionalParameter = container.AddFunctionImport("FunctionImport", functionWithOneRequiredTwoOptionalParameter); var functionImportWithOneRequiredThreeOptionalParameter = container.AddFunctionImport("FunctionImport", functionWithOneRequiredThreeOptionalParameter); IEdmOperationImport functionImport; // Resolve overload function import without parameter. var parameters = new string[] { }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, DefaultUriResolver).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithoutParameter); // Resolve overload function import with parameter. parameters = new string[] { "Parameter" }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, DefaultUriResolver).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithParameter); // Resolve overload function import with parameter. parameters = new string[] { "Parameter", "Parameter2" }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, DefaultUriResolver).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithTwoParameter); // Resolve overload function with two required and one optional parameter. parameters = new string[] { "Parameter", "Parameter2", "Parameter3" }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, DefaultUriResolver).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithTwoRequiredOneOptionalParameter); // Resolve overload function with one required and two optional parameters. parameters = new string[] { "Parameter1", "Parameter3" }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, DefaultUriResolver).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithOneRequiredOneOptionalParameter); // Resolve overload function with one required and three optional parameters (one omitted). parameters = new string[] { "Parameter1", "Parameter3", "Parameter5" }; FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, DefaultUriResolver).Should().BeTrue(); functionImport.Should().BeSameAs(functionImportWithOneRequiredThreeOptionalParameter); // Raise exception if more than one match. parameters = new string[] { "Parameter1", "Parameter4" }; Action resolve = () => FunctionOverloadResolver.ResolveOperationImportFromList("FunctionImport", parameters, model, out functionImport, DefaultUriResolver); resolve.ShouldThrow <ODataException>().WithMessage(ODataErrorStrings.FunctionOverloadResolver_MultipleOperationImportOverloads("FunctionImport")); }