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); }
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); }