Beispiel #1
0
  @Test
  public void testSimpleMath() {
    Expr four = ValueExpr.createValue(4);
    Expr five = ValueExpr.createValue(5);

    Expr expr = new MathExpr(MathExpr.Operation.ADD, four, five);
    mainBlock.addStatement(new ReturnStatement(expr));

    int result = runMain();
    assertEquals(9, result);
  }
  public ValueExpressionEvaluator(ValueExpr expr, SQLBuilder parent, ValueType optype) {
    this.parent = parent;

    optypes.push(optype);

    if (log.isTraceEnabled()) {
      long start = System.currentTimeMillis();
      expr.visit(this);
      log.trace("expression evaluated in {} ms", (System.currentTimeMillis() - start));
    } else {
      expr.visit(this);
    }
  }
Beispiel #3
0
  @Test
  public void testSimpleMath2() {
    // 2 * 3 * 2
    Expr two = ValueExpr.createValue(2);
    Expr three = ValueExpr.createValue(3);

    Expr multExpr = new MathExpr(MathExpr.Operation.MULT, two, three);
    Expr expr = new MathExpr(MathExpr.Operation.MULT, multExpr, two);
    mainBlock.addStatement(new ReturnStatement(expr));

    int result = runMain();
    assertEquals(12, result);
  }
  @Override
  public void meet(Bound node) throws RuntimeException {
    ValueExpr arg = node.getArg();

    if (arg instanceof ValueConstant) {
      builder.append(Boolean.toString(true));
    } else if (arg instanceof Var) {
      builder.append("(");
      optypes.push(ValueType.NODE);
      arg.visit(this);
      optypes.pop();
      builder.append(" IS NOT NULL)");
    }
  }
Beispiel #5
0
  @Test
  public void testIfFalse() {
    // if it == 0 return 1
    args.set("it", 2);

    Expr expr =
        new MathExpr(MathExpr.Operation.EQ, ValueExpr.createVar("it"), ValueExpr.createValue(0));
    Block block = new Block();
    block.addReturnValue(1);
    mainBlock.addStatement(new IfStatement(expr, block));
    mainBlock.addReturnValue(0);

    int result = runMain();
    assertEquals(0, result);
  }
Beispiel #6
0
  @Test
  public void testWhile() {
    // if it == 0 return 1
    args.set("it", 5);

    Expr expr =
        new MathExpr(MathExpr.Operation.GT, ValueExpr.createVar("it"), ValueExpr.createValue(0));
    mainBlock.addSimpleAssign("total", 0);
    Block block = new Block();
    // subtract 1 from it
    MathExpr decrementIt =
        new MathExpr(MathExpr.Operation.SUB, ValueExpr.createVar("it"), ValueExpr.createValue(1));
    block.addStatement(new Assignment("it", decrementIt));
    // add 2 to total
    MathExpr addTwoToTotal =
        new MathExpr(
            MathExpr.Operation.ADD, ValueExpr.createVar("total"), ValueExpr.createValue(2));
    block.addStatement(new Assignment("total", addTwoToTotal));

    mainBlock.addStatement(new WhileStatement(expr, block));
    mainBlock.addReturnVar("total");

    int result = runMain();
    assertEquals(10, result);
  }