public void TestAppendString(double value, string expected) { var expr = new FloatConstantExpression((float)value); var builder = new StringBuilder(); expr.AppendString(builder); Assert.That(builder.ToString(), Is.EqualTo(expected)); }
public void TestAppendStringCulture(double value, string expected) { using (var cultureOverride = new CultureOverride("fr-FR")) { var expr = new FloatConstantExpression((float)value); var builder = new StringBuilder(); expr.AppendString(builder); Assert.That(builder.ToString(), Is.EqualTo(expected)); } }
private static bool MergeFields(Field field, Term term, MathematicOperation operation) { ExpressionBase right; if (field.Type == FieldType.Value) { right = new IntegerConstantExpression((int)field.Value); } else if (field.Type == FieldType.Float) { right = new FloatConstantExpression(field.Float); } else { return(false); } ExpressionBase left = null; if (term.multiplier == 1.0) { if (term.field.Type == FieldType.Value) { left = new IntegerConstantExpression((int)term.field.Value); } else if (term.field.Type == FieldType.Float) { left = new FloatConstantExpression(term.field.Float); } } if (left == null) { FloatConstantExpression floatRight; switch (operation) { case MathematicOperation.Multiply: floatRight = FloatConstantExpression.ConvertFrom(right) as FloatConstantExpression; if (floatRight == null) { return(false); } term.multiplier *= floatRight.Value; return(true); case MathematicOperation.Divide: floatRight = FloatConstantExpression.ConvertFrom(right) as FloatConstantExpression; if (floatRight == null) { return(false); } term.multiplier /= floatRight.Value; return(true); default: return(false); } } var mathematicExpression = new MathematicExpression(left, operation, right); term.field = AchievementBuilder.CreateFieldFromExpression(mathematicExpression.MergeOperands()); return(true); }
private Expression Factor() { Expression expr = null; switch (look.Tag) { case '(': Move(); expr = Bool(); Match(')'); return(expr); case Tags.NUMBER: IntegerToken token = (IntegerToken)look; expr = new IntConstantExpression(token.Value); Move(); return(expr); case Tags.REAL: RealToken realToken = (RealToken)look; expr = new FloatConstantExpression(realToken.Value); Move(); return(expr); case Tags.TRUE: Move(); return(BoolConstantExpression.True);; case Tags.FALSE: Move(); return(BoolConstantExpression.False); case Tags.ID: Move(); if (look.Tag == '(') { return(FuncCallExpression()); } else { VariableUseExpression varUseExpr = VariableUseExpression(); if (look.Tag == Tags.INCR) { Expression incrExpr = UnaryArithmeticExpression.CreatePostIncrement(varUseExpr); Move(); return(incrExpr); } if (look.Tag == Tags.DECR) { Expression decrExpr = UnaryArithmeticExpression.CreatePostDecrement(varUseExpr); Move(); return(decrExpr); } if (look.Tag == '=') { Move(); return(new VariableAssignExpression(varUseExpr, Bool())); } return(varUseExpr); } } Error("Syntax error"); return(null); }