Skip to content

Commit c73844f

Browse files
committed
Строгое преобразование строк в числа
1 parent 616afbc commit c73844f

File tree

3 files changed

+9
-13
lines changed

3 files changed

+9
-13
lines changed

src/main/java/com/annimon/ownlang/lib/StringValue.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,20 +87,12 @@ public Object raw() {
8787

8888
@Override
8989
public int asInt() {
90-
try {
91-
return Integer.parseInt(value);
92-
} catch (NumberFormatException e) {
93-
return 0;
94-
}
90+
return Integer.parseInt(value);
9591
}
9692

9793
@Override
9894
public double asNumber() {
99-
try {
100-
return Double.parseDouble(value);
101-
} catch (NumberFormatException e) {
102-
return 0;
103-
}
95+
return Double.parseDouble(value);
10496
}
10597

10698
@Override

src/test/java/com/annimon/ownlang/parser/ParserTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,11 @@ private static void assertEval(Value expectedValue, String input, Expression exp
3535
BlockStatement program = assertExpression(input, expected);
3636
program.execute();
3737
final Value actual = Variables.get("a");
38-
assertEquals(expectedValue.asNumber(), actual.asNumber(), 0.001);
39-
assertEquals(expectedValue.asString(), actual.asString());
38+
try {
39+
assertEquals(expectedValue.asNumber(), actual.asNumber(), 0.001);
40+
} catch (NumberFormatException nfe) {
41+
assertEquals(expectedValue.asString(), actual.asString());
42+
}
4043
}
4144

4245
private static BlockStatement assertExpression(String input, Expression expected) {

src/test/java/com/annimon/ownlang/parser/ast/VariableExpressionTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.annimon.ownlang.parser.ast;
22

33
import static com.annimon.ownlang.parser.ast.ASTHelper.*;
4+
import com.annimon.ownlang.exceptions.VariableDoesNotExistsException;
45
import org.junit.Test;
56

67
/**
@@ -26,7 +27,7 @@ public void testVariableReplace() {
2627
assertValue(number(8), var("a").eval());
2728
}
2829

29-
@Test(expected = RuntimeException.class)
30+
@Test(expected = VariableDoesNotExistsException.class)
3031
public void testUnknownVariable() {
3132
var("a").eval();
3233
}

0 commit comments

Comments
 (0)