mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Строгое преобразование строк в числа
This commit is contained in:
parent
616afbc8c0
commit
c73844fd51
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user