@VisibleForTesting
  Object evaluate(final GenericRow row) {
    return term.getValue(new TermEvaluationContext(row));
  }
@Test
  public void shouldEvaluateComparisons_decimal() {
    // Given:
    final Expression expression1 = new ComparisonExpression(
        ComparisonExpression.Type.GREATER_THAN,
        COL8,
        new DecimalLiteral(new BigDecimal("1.2"))
    );
    final Expression expression2 = new ComparisonExpression(
        ComparisonExpression.Type.LESS_THAN,
        COL8,
        new DecimalLiteral(new BigDecimal("5.1"))
    );
    final Expression expression3 = new ComparisonExpression(
        ComparisonExpression.Type.EQUAL,
        COL8,
        new DecimalLiteral(new BigDecimal("10.4"))
    );
    final Expression expression4 = new ComparisonExpression(
        ComparisonExpression.Type.GREATER_THAN,
        COL8,
        new IntegerLiteral(5)
    );
    final Expression expression5 = new ComparisonExpression(
        ComparisonExpression.Type.LESS_THAN,
        COL8,
        new DoubleLiteral(6.5)
    );
    final Expression expression6 = new ComparisonExpression(
        ComparisonExpression.Type.LESS_THAN,
        COL8,
        new LongLiteral(10L)
    );

    // When:
    InterpretedExpression interpreter1 = interpreter(expression1);
    InterpretedExpression interpreter2 = interpreter(expression2);
    InterpretedExpression interpreter3 = interpreter(expression3);
    InterpretedExpression interpreter4 = interpreter(expression4);
    InterpretedExpression interpreter5 = interpreter(expression5);
    InterpretedExpression interpreter6 = interpreter(expression6);

    // Then:
    assertThat(interpreter1.evaluate(make(8, new BigDecimal("3.4"))), is(true));
    assertThat(interpreter1.evaluate(make(8, new BigDecimal("1.1"))), is(false));
    assertThat(interpreter2.evaluate(make(8, new BigDecimal("4.9"))), is(true));
    assertThat(interpreter2.evaluate(make(8, new BigDecimal("5.2"))), is(false));
    assertThat(interpreter3.evaluate(make(8, new BigDecimal("10.4"))), is(true));
    assertThat(interpreter3.evaluate(make(8, new BigDecimal("10.5"))), is(false));
    assertThat(interpreter4.evaluate(make(8, new BigDecimal("6.5"))), is(true));
    assertThat(interpreter4.evaluate(make(8, new BigDecimal("4.5"))), is(false));
    assertThat(interpreter5.evaluate(make(8, new BigDecimal("5.5"))), is(true));
    assertThat(interpreter5.evaluate(make(8, new BigDecimal("7.5"))), is(false));
    assertThat(interpreter6.evaluate(make(8, new BigDecimal("7"))), is(true));
    assertThat(interpreter6.evaluate(make(8, new BigDecimal("19.567"))), is(false));
  }