public static Literal getRealLiteral(String numberToken, int startPos, int endPos, boolean isFloat) { try { if (isFloat) { float value = Float.parseFloat(numberToken); return new FloatLiteral(numberToken, startPos, endPos, value); } else { double value = Double.parseDouble(numberToken); return new RealLiteral(numberToken, startPos, endPos, value); } } catch (NumberFormatException ex) { throw new InternalParseException(new SpelParseException(startPos, ex, SpelMessage.NOT_A_REAL, numberToken)); } }
@Test public void test_unaryPlusWithNumberOperand() { ExpressionState expressionState = new ExpressionState(new StandardEvaluationContext()); { RealLiteral realLiteral = new RealLiteral("123.00", -1, -1, 123.0); OpPlus o = new OpPlus(-1, -1, realLiteral); TypedValue value = o.getValueInternal(expressionState); assertEquals(Double.class, value.getTypeDescriptor().getObjectType()); assertEquals(Double.class, value.getTypeDescriptor().getType()); assertEquals(realLiteral.getLiteralValue().getValue(), value.getValue()); } { IntLiteral intLiteral = new IntLiteral("123", -1, -1, 123); OpPlus o = new OpPlus(-1, -1, intLiteral); TypedValue value = o.getValueInternal(expressionState); assertEquals(Integer.class, value.getTypeDescriptor().getObjectType()); assertEquals(Integer.class, value.getTypeDescriptor().getType()); assertEquals(intLiteral.getLiteralValue().getValue(), value.getValue()); } { LongLiteral longLiteral = new LongLiteral("123", -1, -1, 123L); OpPlus o = new OpPlus(-1, -1, longLiteral); TypedValue value = o.getValueInternal(expressionState); assertEquals(Long.class, value.getTypeDescriptor().getObjectType()); assertEquals(Long.class, value.getTypeDescriptor().getType()); assertEquals(longLiteral.getLiteralValue().getValue(), value.getValue()); } }
public static Literal getRealLiteral(String numberToken, int pos, boolean isFloat) { try { if (isFloat) { float value = Float.parseFloat(numberToken); return new FloatLiteral(numberToken, pos, value); } else { double value = Double.parseDouble(numberToken); return new RealLiteral(numberToken, pos, value); } } catch (NumberFormatException ex) { throw new InternalParseException(new SpelParseException(pos>>16, ex, SpelMessage.NOT_A_REAL, numberToken)); } }
RealLiteral n1 = new RealLiteral("123.00", -1, -1, 123.0); RealLiteral n2 = new RealLiteral("456.00", -1, -1, 456.0); OpPlus o = new OpPlus(-1, -1, n1, n2); TypedValue value = o.getValueInternal(expressionState);
public static Literal getRealLiteral(String numberToken, int pos, boolean isFloat) { try { if (isFloat) { float value = Float.parseFloat(numberToken); return new FloatLiteral(numberToken, pos, value); } else { double value = Double.parseDouble(numberToken); return new RealLiteral(numberToken, pos, value); } } catch (NumberFormatException ex) { throw new InternalParseException(new SpelParseException(pos>>16, ex, SpelMessage.NOT_A_REAL, numberToken)); } }