public void NumberLiteralToken_TryEvaluate <T>(string number, T expectedResult, bool expectedEvaluated)
            where T : struct
        {
            var token        = new NumberLiteralToken(0, number.Length);
            var syntaxConfig = HandyQueryLanguage.BuildSyntax().Build();

            var evaluated = token.TryEvaluate <T>(number, syntaxConfig, out var result);

            result.Should().Be(expectedResult);
            evaluated.Should().Be(expectedEvaluated);
        }
 private IExpression ParseLiteralExpression(ref IToken token)
 {
     if (token is NumberLiteralToken)
     {
         NumberLiteralToken numberLiteralToken = token as NumberLiteralToken;
         return(new NumericLiteralExpression(numberLiteralToken.Value));
     }
     else if (token is StringLiteralToken)
     {
         StringLiteralToken stringLiteralToken = token as StringLiteralToken;
         return(new StringLiteralExpression(stringLiteralToken.Value));
     }
     else if (token is BooleanLiteralToken)
     {
         BooleanLiteralToken booleanLiteralToken = token as BooleanLiteralToken;
         return(new BooleanLiteralExpression(booleanLiteralToken.Value));
     }
     return(null);
 }
Example #3
0
        private static Tuple <Token, int> TryParseNumberLiteral(string query, int indexToParse)
        {
            ContractParserAbbreaviation(query, indexToParse);

            if (!char.IsDigit(query, indexToParse))
            {
                return(null);
            }

            var numberCharactersCount = query
                                        .Skip(indexToParse)
                                        .TakeWhile(c => char.IsDigit(c) || c == '.')
                                        .Count();

            Contract.Assume(numberCharactersCount > 0);
            Contract.Assume(numberCharactersCount <= query.Length - indexToParse);

            var numberLiteralValue = double.Parse(query.Substring(indexToParse, numberCharactersCount), NumberStyles.AllowDecimalPoint);
            var numberLiteral      = new NumberLiteralToken(numberLiteralValue);

            return(new Tuple <Token, int>(numberLiteral, indexToParse + numberCharactersCount));
        }
        public void SetEasing(IdentiferToken easingMode, IdentiferToken easingFunctionType, NumberLiteralToken param1 = null, NumberLiteralToken param2 = null)
        {
            var c1 = TypeDescriptor.GetConverter(typeof(EasingMode));
            var easingModeValue = (EasingMode)c1.ConvertFromInvariantString(easingMode.Text);

            var converter = TypeDescriptor.GetConverter(typeof(EasingType));

            var param1val = (param1 == null) ? (double?)null : Convert.ToDouble(param1.Text);
            var param2val = (param2 == null) ? (int?)null : Convert.ToInt32(param2.Text);

            var easingFunctionTypeValue = (EasingType)converter.ConvertFromInvariantString(easingFunctionType.Text);

            var easingFunctionValue    = createEasingFunction(easingFunctionTypeValue, easingModeValue, param1val, param2val);
            var easingFunctionProperty = ReflectionHelper.GetDependencyProperty("EasingFunction", typeof(T), true);



            CompositeAnimation.SetValue(easingFunctionProperty, easingFunctionValue);
        }