public void VisitBinaryOperatorTest(object a, object b, Type expressionType, ValueType expectedType) { var target = new TypeCheckingVisitor(); var lhs = new ConstantExpr(a); var rhs = new ConstantExpr(b); var expression = (Expression)Activator.CreateInstance(expressionType, new object[] { lhs, rhs }); var method = typeof(TypeCheckingVisitor).GetMethods() .First(m => m.Name == "Visit" && m.GetParameters().ElementAt(0).ParameterType == expressionType); ValueType actual; try { actual = (ValueType)method.Invoke(target, new object[] { expression, scope }); } catch (TargetInvocationException ex) { throw ex.InnerException; } Assert.AreEqual(expectedType, actual); }
/// <summary> /// Parses the date expression. /// - Oct 10 /// - Oct 10 2011 /// - Oct 10, 2011 /// - Oct 10th /// - Oct 10th 2011 /// - Oct 10th, 2011 /// - October 10 /// - October 10, 2011 /// - October 10th /// - October 10th, 2011 /// </summary> /// <returns></returns> public override Expr Parse() { DateTime date = ParseDate(this); Expr exp = new ConstantExpr(date); return(exp); }
/// <summary> /// Parse the expression. /// </summary> /// <returns></returns> public override Expr Parse() { var printToken = _tokenIt.NextToken; var lineToken = _tokenIt.AdvanceAndGet <Token>(); Expr lineExp = null; if (lineToken.Kind == TokenKind.Multi) { lineExp = _parser.ParseInterpolatedExpression(lineToken); } else { lineExp = new ConstantExpr(lineToken.Value); } var exp = new FunctionCallExpr(); exp.NameExp = new VariableExpr("print"); exp.ParamListExpressions.Add(lineExp); _parser.SetScriptPosition(exp, printToken); // Move past this plugin. _tokenIt.Advance(); return(exp); }
void IsConstant(Expr e, object o) { Assert.That(e is ConstantExpr); ConstantExpr c = e as ConstantExpr; Assert.That(c.Value, Is.EqualTo(o)); }
void IsConstant(Expr e, object o) { e.Should().BeOfType <ConstantExpr>(); ConstantExpr c = e as ConstantExpr; c.Value.Should().Be(o); }
public ConditionalExpr MakeCondition(bool condition, int valueTrue, int valueFalse) { var conditionExpression = new ConstantExpr(condition); var trueExpression = new ConstantExpr(valueTrue); var falseExpression = new ConstantExpr(valueFalse); return new ConditionalExpr(conditionExpression, trueExpression, falseExpression); }
/// <summary> /// Creates a variable expression with symbol scope, context, script refernce set. /// </summary> /// <param name="name"></param> /// <returns></returns> public static Expr Const(LObject obj, TokenData token) { var exp = new ConstantExpr(); exp.Value = obj; SetupContext(exp, token); return(exp); }
public ConditionalExpr MakeCondition(bool condition, int valueTrue, int valueFalse) { var conditionExpression = new ConstantExpr(condition); var trueExpression = new ConstantExpr(valueTrue); var falseExpression = new ConstantExpr(valueFalse); return(new ConditionalExpr(conditionExpression, trueExpression, falseExpression)); }
public void AcceptMethodCallsVisitOnVisitorWithThis() { var target = new ConstantExpr(1357); var visitor = new Mock<IExpressionVisitor<string, int>>(); target.Accept(visitor.Object, 0); visitor.Verify(x => x.Visit(target, 0), Times.Once); }
public void LeftPropertyReturnsPassedLhsInstance() { var lhs = new ConstantExpr(1); var rhs = new ConstantExpr(2); var target = new MultExpr(lhs, rhs); Assert.AreSame(lhs, target.Left); }
public void RightPropertyReturnsPassedRhsInstance() { var lhs = new ConstantExpr(1); var rhs = new ConstantExpr(2); var target = new MinusExpr(lhs, rhs); Assert.AreSame(rhs, target.Right); }
public virtual bool VisitConstantExpr(ConstantExpr stmt) { if (!VisitFullExpr(stmt)) { return(false); } return(true); }
public void RightPropertyReturnsPassedRhsInstance() { var lhs = new ConstantExpr(1); var rhs = new ConstantExpr(2); var target = new DivExpr(lhs, rhs); Assert.AreSame(rhs, target.Right); }
public void LeftPropertyReturnsPassedLhsInstance() { var lhs = new ConstantExpr(1); var rhs = new ConstantExpr(2); var target = new DivExpr(lhs, rhs); Assert.AreSame(lhs, target.Left); }
public void AcceptMethodCallsVisitOnVisitorWithThis() { var target = new ConstantExpr(1357); var visitor = new Mock <IExpressionVisitor <string, int> >(); target.Accept(visitor.Object, 0); visitor.Verify(x => x.Visit(target, 0), Times.Once); }
public void AcceptMethodCallsOnlyVisitOnVisitorWithThisAndNoOtherVisitMethods() { var target = new ConstantExpr(1357); // throw exception is any other methods called other than the ConstantExpr overload. var visitor = new Mock<IExpressionVisitor<string, int>>(MockBehavior.Strict); visitor.Setup(x => x.Visit(It.IsAny<ConstantExpr>(), It.IsAny<int>())).Returns(""); target.Accept(visitor.Object, 0); }
public PExpr Visit( ConstantExpr e ) { if( e.Value == null ) return new PExpr( RuntimeObj.Null ); if( e.Value is string ) return new PExpr( _global.CreateString( (string)e.Value ) ); if( e == ConstantExpr.UndefinedExpr ) return new PExpr( RuntimeObj.Undefined ); if( e.Value is Double ) return new PExpr( _global.CreateNumber( (Double)e.Value ) ); if( e.Value is Boolean ) return new PExpr( _global.CreateBoolean( (Boolean)e.Value ) ); return new PExpr( new RuntimeError( e, "Unsupported JS type: " + e.Value.GetType().Name ) ); }
public void VisitBooleanConstantExpr(bool value) { var target = new TypeCheckingVisitor(); var expression = new ConstantExpr(value); var actual = target.Visit(expression, scope); Assert.AreEqual(ValueType.Boolean, actual); }
public void VisitFloatConstantExpr() { var target = new EvaluateVisitor(); var expression = new ConstantExpr(12.34); var actual = target.Visit(expression, _scope); Assert.AreEqual("12.34", actual.ToString()); }
public void VisitBooleanConstantExpr(bool value) { var target = new EvaluateVisitor(); var expression = new ConstantExpr(value); var actual = target.Visit(expression, _scope); Assert.AreEqual(value.ToString(), actual.ToString()); }
public void AcceptMethodCallsOnlyVisitOnVisitorWithThisAndNoOtherVisitMethods() { var target = new ConstantExpr(1357); // throw exception is any other methods called other than the ConstantExpr overload. var visitor = new Mock <IExpressionVisitor <string, int> >(MockBehavior.Strict); visitor.Setup(x => x.Visit(It.IsAny <ConstantExpr>(), It.IsAny <int>())).Returns(""); target.Accept(visitor.Object, 0); }
public void VisitConditionMustBeBooleanType(object condition) { var target = new TypeCheckingVisitor(); var conditionExpression = new ConstantExpr(condition); var expr = new ConditionalExpr(conditionExpression, new ConstantExpr(0), new ConstantExpr(0)); target.Visit(expr, scope); }
public void VisitIntegerConstantExpr() { var target = new TypeCheckingVisitor(); var expression = new ConstantExpr(1234); var actual = target.Visit(expression, scope); Assert.AreEqual(ValueType.Int, actual); }
public void VisitIntegerConstantExpr() { var target = new PrintVisitor(); var expression = new ConstantExpr(1234); var actual = target.Visit(expression, scope); Assert.AreEqual("1234", actual); }
public void ReturnTypePropertyReturnsPassedReturnType() { var name = new IdentifierExpr(RandomGenerator.String()); var arguments = new VarDefinitionStmt[0]; var body = new ConstantExpr(RandomGenerator.Int()); var returnType = new IdentifierExpr(RandomGenerator.String()); var target = new LambdaDefinitionExpr(name, arguments, body, returnType); Assert.AreSame(returnType, target.ReturnType); }
public void VisitBooleanNotExpr(bool a, string expected) { var target = new PrintVisitor(); var aExpression = new ConstantExpr(a); var expr = new NotExpr(aExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void ReturnTypePropertyReturnsPassedReturnType() { var name = new IdentifierExpr(RandomGenerator.String()); var arguments = new VarDefinitionStmt[0]; var body = new ConstantExpr(RandomGenerator.Int()); var returnType = new IdentifierExpr(RandomGenerator.String()); var target = new LambdaDefinitionExpr(name, arguments, body, returnType); Assert.AreSame(returnType, target.ReturnType); }
public void VisitBooleanNotExpr(bool a, bool expected) { var target = new EvaluateVisitor(); var aExpression = new ConstantExpr(a); var expr = new NotExpr(aExpression); var actual = target.Visit(expr, _scope); Assert.AreEqual(expected, actual.ToBoolean()); }
public void VisitBooleanNotExpr(bool a, ValueType expected) { var target = new TypeCheckingVisitor(); var aExpression = new ConstantExpr(a); var expr = new NotExpr(aExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitBooleanOrExpr(object a, object b, string expected) { var target = new PrintVisitor(); var aExpression = new ConstantExpr(a); var bExpression = new ConstantExpr(b); var expr = new OrExpr(aExpression, bExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitPlusWithDoubleAndIntExpr() { var target = new TypeCheckingVisitor(); var lhs = new ConstantExpr(1.1); var rhs = new ConstantExpr(2); var expression = new PlusExpr(lhs, rhs); var actual = target.Visit(expression, scope); Assert.AreEqual(ValueType.Float, actual); }
public void VisitDivExpr() { var target = new EvaluateVisitor(); var lhs = new ConstantExpr(10); var rhs = new ConstantExpr(2); var expression = new DivExpr(lhs, rhs); var actual = target.Visit(expression, _scope); Assert.AreEqual("5", actual.ToString()); }
public void VisitDivExpr() { var target = new TypeCheckingVisitor(); var lhs = new ConstantExpr(10); var rhs = new ConstantExpr(2); var expression = new DivExpr(lhs, rhs); var actual = target.Visit(expression, scope); Assert.AreEqual(ValueType.Int, actual); }
public void VisitDivExpr() { var target = new PrintVisitor(); var lhs = new ConstantExpr(1); var rhs = new ConstantExpr(2); var expression = new DivExpr(lhs, rhs); var actual = target.Visit(expression, scope); Assert.AreEqual("1/2", actual); }
public void VisitConditionalExpr(bool condition, object thenValue, object elseValue, ValueType expected) { var target = new TypeCheckingVisitor(); var conditionExpression = new ConstantExpr(condition); var thenExpression = new ConstantExpr(thenValue); var elseExpression = new ConstantExpr(elseValue); var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitConditionalExpr(bool condition, int thenValue, int elseValue, string expected) { var target = new PrintVisitor(); var conditionExpression = new ConstantExpr(condition); var thenExpression = new ConstantExpr(thenValue); var elseExpression = new ConstantExpr(elseValue); var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitMassEnergyEquavalenceExpressionTree() { var target = new PrintVisitor(); var e = new IdentifierExpr("e"); var m = new IdentifierExpr("m"); var c = new IdentifierExpr("C"); var two = new ConstantExpr(2); var expression = new AssignmentExpr(e, new MultExpr(m, new PowExpr(c, two))); var actual = target.Visit(expression, scope); Assert.AreEqual("e=m*C^2", actual); }
public void VisitBooleanNotExpr(bool a, bool expected) { var target = new EvaluateVisitor(); var aExpression = new ConstantExpr(a); var expr = new NotExpr(aExpression); var actual = target.Visit(expr, _scope); Assert.AreEqual(expected, actual.ToBoolean()); }
public Expr Constant(ConstantExpr constant) { return Expr.Zero; }
public void VisitBooleanConstantExpr(bool value) { var target = new EvaluateVisitor(); var expression = new ConstantExpr(value); var actual = target.Visit(expression, _scope); Assert.AreEqual(value.ToString(), actual.ToString()); }
public void VisitBinaryOperatorTest(object a, object b, Type expressionType, ValueType expectedType) { var target = new TypeCheckingVisitor(); var lhs = new ConstantExpr(a); var rhs = new ConstantExpr(b); var expression = (Expression)Activator.CreateInstance(expressionType, new object[] { lhs, rhs }); var method = typeof(TypeCheckingVisitor).GetMethods() .First(m => m.Name == "Visit" && m.GetParameters().ElementAt(0).ParameterType == expressionType); ValueType actual; try { actual = (ValueType)method.Invoke(target, new object[] { expression, scope }); } catch (TargetInvocationException ex) { throw ex.InnerException; } Assert.AreEqual(expectedType, actual); }
public void VisitConditionalExpr(bool condition, object thenValue, object elseValue, ValueType expected) { var target = new TypeCheckingVisitor(); var conditionExpression = new ConstantExpr(condition); var thenExpression = new ConstantExpr(thenValue); var elseExpression = new ConstantExpr(elseValue); var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitMathExpressionTree() { var target = new TypeCheckingVisitor(); var one = new ConstantExpr(1); var two = new ConstantExpr(2); var three = new ConstantExpr(3); var four = new ConstantExpr(4); var five = new ConstantExpr(5); var six = new ConstantExpr(6); var expr = new DivExpr(new MultExpr(three, six), new MultExpr(new MinusExpr(five, one), new PlusExpr(four, two))); var actual = target.Visit(expr, scope); Assert.AreEqual(ValueType.Int, actual); }
public void VisitPlusWithDoubleAndIntExpr() { var target = new TypeCheckingVisitor(); var lhs = new ConstantExpr(1.1); var rhs = new ConstantExpr(2); var expression = new PlusExpr(lhs, rhs); var actual = target.Visit(expression, scope); Assert.AreEqual(ValueType.Float, actual); }
public void VisitAlgebraicExpressionTree() { var target = new PrintVisitor(); var a = new IdentifierExpr("a"); var b = new IdentifierExpr("b"); var c = new IdentifierExpr("c"); var one = new ConstantExpr(1); var two = new ConstantExpr(2); var three = new ConstantExpr(3); var four = new ConstantExpr(4); var five = new ConstantExpr(5); var six = new ConstantExpr(6); var expression = new DivExpr(new MultExpr(three,new MultExpr(a, two)), new MultExpr(new MinusExpr(new PowExpr(five,b), one), new PlusExpr(new MinusExpr(six, four), c))); var actual = target.Visit(expression, scope); Assert.AreEqual("3*a*2/5^b-1*6-4+c", actual); }
public void VisitMathExpressionTree() { var target = new PrintVisitor(); var one = new ConstantExpr(1); var two = new ConstantExpr(2); var three = new ConstantExpr(3); var four = new ConstantExpr(4); var five = new ConstantExpr(5); var six = new ConstantExpr(6); var expression = new DivExpr(new MultExpr(three, six), new MultExpr(new MinusExpr(five, one), new PlusExpr(four, two))); var actual = target.Visit(expression, scope); Assert.AreEqual("3*6/5-1*4+2", actual); }
public void VisitDivExpr() { var target = new PrintVisitor(); var lhs = new ConstantExpr(1); var rhs = new ConstantExpr(2); var expression = new DivExpr(lhs, rhs); var actual = target.Visit(expression, scope); Assert.AreEqual("1/2", actual); }
public void VisitMathExpressionUsingFloatingPointDivisionTree() { var target = new EvaluateVisitor(); var one = new ConstantExpr(1.0); var two = new ConstantExpr(2); var three = new ConstantExpr(3); var four = new ConstantExpr(4); var five = new ConstantExpr(5); var six = new ConstantExpr(6); var expr = new DivExpr(new MultExpr(three, six), new MultExpr(new MinusExpr(five, one), new PlusExpr(four, two))); var actual = target.Visit(expr, _scope); Assert.AreEqual("0.75", actual.ToString()); }
public void VisitDivExpr() { var target = new EvaluateVisitor(); var lhs = new ConstantExpr(10); var rhs = new ConstantExpr(2); var expression = new DivExpr(lhs, rhs); var actual = target.Visit(expression, _scope); Assert.AreEqual("5", actual.ToString()); }
public void ValueStoredIsAvailableFromTheValueProperty(object value) { var target = new ConstantExpr(value); Assert.AreSame(value, target.Value); }
public void VisitBooleanConstantExpr(bool value) { var target = new TypeCheckingVisitor(); var expression = new ConstantExpr(value); var actual = target.Visit(expression, scope); Assert.AreEqual(ValueType.Boolean, actual); }
public void VisitMassEnergyEquavalenceExpressionTree() { var target = new PrintVisitor(); var e = new IdentifierExpr("e"); var m = new IdentifierExpr("m"); var c = new IdentifierExpr("C"); var two = new ConstantExpr(2); var expression = new AssignmentExpr(e, new MultExpr(m, new PowExpr(c, two))); var actual = target.Visit(expression, scope); Assert.AreEqual("e=m*C^2", actual); }
public void VisitDivExpr() { var target = new TypeCheckingVisitor(); var lhs = new ConstantExpr(10); var rhs = new ConstantExpr(2); var expression = new DivExpr(lhs, rhs); var actual = target.Visit(expression, scope); Assert.AreEqual(ValueType.Int, actual); }
public void VisitBooleanOrExpr(object a, object b, string expected) { var target = new PrintVisitor(); var aExpression = new ConstantExpr(a); var bExpression = new ConstantExpr(b); var expr = new OrExpr(aExpression, bExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitBooleanNotExpr(bool a, ValueType expected) { var target = new TypeCheckingVisitor(); var aExpression = new ConstantExpr(a); var expr = new NotExpr(aExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitBooleanNotExpr(bool a, string expected) { var target = new PrintVisitor(); var aExpression = new ConstantExpr(a); var expr = new NotExpr(aExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitConditionMustBeBooleanType(object condition) { var target = new TypeCheckingVisitor(); var conditionExpression = new ConstantExpr(condition); var expr = new ConditionalExpr(conditionExpression, new ConstantExpr(0), new ConstantExpr(0)); target.Visit(expr, scope); }
public void VisitConditionalExpr(bool condition, int thenValue, int elseValue, string expected) { var target = new PrintVisitor(); var conditionExpression = new ConstantExpr(condition); var thenExpression = new ConstantExpr(thenValue); var elseExpression = new ConstantExpr(elseValue); var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitIntegerConstantExpr() { var target = new TypeCheckingVisitor(); var expression = new ConstantExpr(1234); var actual = target.Visit(expression, scope); Assert.AreEqual(ValueType.Int, actual); }
public void VisitIntegerConstantExpr() { var target = new PrintVisitor(); var expression = new ConstantExpr(1234); var actual = target.Visit(expression, scope); Assert.AreEqual("1234", actual); }