Строгое преобразование строк в числа

This commit is contained in:
Victor 2019-04-04 12:46:39 +03:00
parent 616afbc8c0
commit c73844fd51
3 changed files with 9 additions and 13 deletions

View File

@ -87,20 +87,12 @@ public final class StringValue implements Value {
@Override
public int asInt() {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
return 0;
}
return Integer.parseInt(value);
}
@Override
public double asNumber() {
try {
return Double.parseDouble(value);
} catch (NumberFormatException e) {
return 0;
}
return Double.parseDouble(value);
}
@Override

View File

@ -35,8 +35,11 @@ public class ParserTest {
BlockStatement program = assertExpression(input, expected);
program.execute();
final Value actual = Variables.get("a");
assertEquals(expectedValue.asNumber(), actual.asNumber(), 0.001);
assertEquals(expectedValue.asString(), actual.asString());
try {
assertEquals(expectedValue.asNumber(), actual.asNumber(), 0.001);
} catch (NumberFormatException nfe) {
assertEquals(expectedValue.asString(), actual.asString());
}
}
private static BlockStatement assertExpression(String input, Expression expected) {

View File

@ -1,6 +1,7 @@
package com.annimon.ownlang.parser.ast;
import static com.annimon.ownlang.parser.ast.ASTHelper.*;
import com.annimon.ownlang.exceptions.VariableDoesNotExistsException;
import org.junit.Test;
/**
@ -26,7 +27,7 @@ public class VariableExpressionTest {
assertValue(number(8), var("a").eval());
}
@Test(expected = RuntimeException.class)
@Test(expected = VariableDoesNotExistsException.class)
public void testUnknownVariable() {
var("a").eval();
}