public void GetValues()
        {
            ODataUnresolvedFunctionParameterAlias alias = new ODataUnresolvedFunctionParameterAlias(
                "alias", HardCodedTestModel.GetPersonAddressProp().Type);

            alias.Alias.Should().Be("alias");
            alias.Type.Should().Be(HardCodedTestModel.GetPersonAddressProp().Type);
        }
        public void GetValues()
        {
            ODataUnresolvedFunctionParameterAlias alias = new ODataUnresolvedFunctionParameterAlias(
                "alias", HardCodedTestModel.GetPersonAddressProp().Type);

            Assert.Equal("alias", alias.Alias);
            Assert.Same(alias.Type, HardCodedTestModel.GetPersonAddressProp().Type);
        }
예제 #3
0
        /// <summary>
        /// Tries to create a parameter using any representation based on the provided delegate for creating it from a converted value.
        /// </summary>
        /// <typeparam name="TParam">The type used to represent a parameter.</typeparam>
        /// <param name="parameterToken">The token from the syntactic parsing step.</param>
        /// <param name="configuration">The configuration for the URI Parser.</param>
        /// <param name="expectedType">The type that the parameter is expected to resolve to.</param>
        /// <param name="createParameter">Callback to create the final parameter from the parsed value.</param>
        /// <param name="parameter">The parameter if one was successfully created.</param>
        /// <returns>Whether the parameter could be created from the parameterToken.</returns>
        private static bool TryCreateParameter <TParam>(FunctionParameterToken parameterToken, ODataUriParserConfiguration configuration, IEdmTypeReference expectedType, Func <object, TParam> createParameter, out TParam parameter)
        {
            Debug.Assert(parameterToken != null, "parameterToken != null");
            QueryToken valueToken = parameterToken.ValueToken;
            object     convertedValue;

            if (valueToken.Kind == QueryTokenKind.FunctionParameterAlias && configuration.FunctionParameterAliasCallback == null)
            {
                convertedValue = new ODataUnresolvedFunctionParameterAlias(((FunctionParameterAliasToken)valueToken).Alias, expectedType);
            }
            else
            {
                string textToParse;
                if (valueToken.Kind == QueryTokenKind.FunctionParameterAlias)
                {
                    textToParse = configuration.FunctionParameterAliasCallback(((FunctionParameterAliasToken)valueToken).Alias);
                }
                else if (valueToken.Kind == QueryTokenKind.RawFunctionParameterValue)
                {
                    textToParse = ((RawFunctionParameterValueToken)valueToken).RawText;
                }
                else
                {
                    parameter = default(TParam);
                    return(false);
                }

                if (textToParse == null)
                {
                    convertedValue = null;
                }
                else
                {
                    convertedValue = ODataUriUtils.ConvertFromUriLiteral(textToParse, ODataVersion.V3, configuration.Model, expectedType);
                }
            }

            parameter = createParameter(convertedValue);
            return(true);
        }