public void GetBuiltInFunctionSignatureFractionalseconds() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; BuiltInUriFunctions.TryGetBuiltInFunction("fractionalseconds", out builtInFunctionsSignature); builtInFunctionsSignature.Length.Should().Be(4); // DateTimeOffset, TimeOfDay, Nullable and not Nullable }
public void GetBuiltInFunctionSignaturesDateTimeOffsetDay() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; BuiltInUriFunctions.TryGetBuiltInFunction("day", out builtInFunctionsSignature); builtInFunctionsSignature.Length.Should().Be(4); // DateTimeOffset and Date, Nullable and not Nullable }
public void GetBuiltInFunctionSignatureSecond() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; BuiltInUriFunctions.TryGetBuiltInFunction("second", out builtInFunctionsSignature); builtInFunctionsSignature.Length.Should().Be(6); // DateTimeOffset, Duration and TimeOfDay, Nullable and not Nullable }
public void GetBuiltInFunctionSignatureMinute() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; BuiltInUriFunctions.TryGetBuiltInFunction("minute", out builtInFunctionsSignature); Assert.Equal(6, builtInFunctionsSignature.Length); // DateTimeOffset, Duration and TimeOfDay, Nullable and not Nullable }
public void GetBuiltInFunctionSignaturesSubstring() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; BuiltInUriFunctions.TryGetBuiltInFunction("substring", out builtInFunctionsSignature); builtInFunctionsSignature.Length.Should().Be(6); }
/// <summary> /// Finds all signatures for the given function name. /// Search in both BuiltIn uri functions and Custom uri functions. /// Combine and return the signatures overloads of the results. /// </summary> /// <param name="functionName">The function to get the signatures for.</param> /// <returns>The signatures which match the supplied function name.</returns> internal static FunctionSignatureWithReturnType[] GetUriFunctionSignatures(string functionName) { FunctionSignatureWithReturnType[] customUriFunctionsSignatures = null; FunctionSignatureWithReturnType[] builtInUriFunctionsSignatures = null; // Try to find the function in the user custom functions and in our built-in functions bool customFound = CustomUriFunctions.TryGetCustomFunction(functionName, out customUriFunctionsSignatures); bool builtInFound = BuiltInUriFunctions.TryGetBuiltInFunction(functionName, out builtInUriFunctionsSignatures); if (!customFound && !builtInFound) { // Not found in both built-in and custom. throw new ODataException(ODataErrorStrings.MetadataBinder_UnknownFunction(functionName)); } if (!customFound) { Debug.Assert(builtInUriFunctionsSignatures != null, "No Built-in functions found"); return(builtInUriFunctionsSignatures); } if (!builtInFound) { Debug.Assert(customUriFunctionsSignatures != null, "No Custom functions found"); return(customUriFunctionsSignatures); } return(builtInUriFunctionsSignatures.Concat(customUriFunctionsSignatures).ToArray()); }
public void GetBuiltInFunctionSignaturesDateTimeOffsetDay() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; BuiltInUriFunctions.TryGetBuiltInFunction("day", out builtInFunctionsSignature); Assert.Equal(4, builtInFunctionsSignature.Length); // DateTimeOffset and Date, Nullable and not Nullable }
public void GetBuiltInFunctionSignaturesSubstring() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; BuiltInUriFunctions.TryGetBuiltInFunction("substring", out builtInFunctionsSignature); Assert.Equal(6, builtInFunctionsSignature.Length); }
public void GetBuiltInFunctionSignaturesShouldThrowOnIncorrectName() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; var result = BuiltInUriFunctions.TryGetBuiltInFunction("rarg", out builtInFunctionsSignature); result.Should().BeFalse(); builtInFunctionsSignature.Should().BeNull(); }
public void GetBuiltInFunctionSignaturesShouldThrowOnIncorrectName() { FunctionSignatureWithReturnType[] builtInFunctionsSignature; var result = BuiltInUriFunctions.TryGetBuiltInFunction("rarg", out builtInFunctionsSignature); Assert.False(result); Assert.Null(builtInFunctionsSignature); }
public void DistanceOnlyWorksBetweenTwoPoints() { string functionName = "geo.distance"; FunctionSignatureWithReturnType[] signatures; BuiltInUriFunctions.TryGetBuiltInFunction(functionName, out signatures); Action parseDistanceWithNonPointOperand = () => ParseFilter("geo.distance(GeometryLineString, geometry'POINT(10 30)') eq 2", HardCodedTestModel.TestModel, HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet()); parseDistanceWithNonPointOperand.Throws<ODataException>(ODataErrorStrings.MetadataBinder_NoApplicableFunctionFound(functionName, UriFunctionsHelper.BuildFunctionSignatureListDescription(functionName, signatures))); }
public void CreateBuiltInSpatialFunctionsSignaturesCorrectly() { var functions = new Dictionary <string, FunctionSignatureWithReturnType[]>(StringComparer.Ordinal); BuiltInUriFunctions.CreateSpatialFunctions(functions); FunctionSignatureWithReturnType[] signatures; functions.TryGetValue("geo.distance", out signatures); Assert.Equal(2, signatures.Length); Assert.Equal("Edm.Double", signatures[0].ReturnType.Definition.FullTypeName()); Assert.Equal("Edm.GeographyPoint", signatures[0].ArgumentTypes[0].Definition.FullTypeName()); Assert.Equal("Edm.GeographyPoint", signatures[0].ArgumentTypes[1].Definition.FullTypeName()); Assert.Equal("Edm.Double", signatures[1].ReturnType.Definition.FullTypeName()); Assert.Equal("Edm.GeometryPoint", signatures[1].ArgumentTypes[0].Definition.FullTypeName()); Assert.Equal("Edm.GeometryPoint", signatures[1].ArgumentTypes[1].Definition.FullTypeName()); }
public void CreateBuiltInSpatialFunctionsSignaturesCorrectly() { var functions = new Dictionary <string, FunctionSignatureWithReturnType[]>(StringComparer.Ordinal); BuiltInUriFunctions.CreateSpatialFunctions(functions); FunctionSignatureWithReturnType[] signatures; functions.TryGetValue("geo.distance", out signatures); signatures.Length.Should().Be(2); signatures[0].ReturnType.Definition.FullTypeName().Should().Be(EdmCoreModel.Instance.GetDouble(true).FullName()); signatures[0].ArgumentTypes[0].Definition.FullTypeName().Should() .Be(EdmCoreModel.Instance.GetSpatial(EdmPrimitiveTypeKind.GeographyPoint, true).FullName()); signatures[0].ArgumentTypes[1].Definition.FullTypeName().Should() .Be(EdmCoreModel.Instance.GetSpatial(EdmPrimitiveTypeKind.GeographyPoint, true).FullName()); signatures[1].ReturnType.Definition.FullTypeName().Should().Be(EdmCoreModel.Instance.GetDouble(true).FullName()); signatures[1].ArgumentTypes[0].Definition.FullTypeName().Should() .Be(EdmCoreModel.Instance.GetSpatial(EdmPrimitiveTypeKind.GeometryPoint, true).FullName()); signatures[1].ArgumentTypes[1].Definition.FullTypeName().Should() .Be(EdmCoreModel.Instance.GetSpatial(EdmPrimitiveTypeKind.GeometryPoint, true).FullName()); }