Skip to content

Commit d07742d

Browse files
committed
Add Number Test and fix false number bug
1 parent f3e023c commit d07742d

File tree

3 files changed

+141
-4
lines changed

3 files changed

+141
-4
lines changed

src/main/java/net/quickwrite/fluent4j/ast/FluentVariant.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.quickwrite.fluent4j.ast;
22

3+
import net.quickwrite.fluent4j.exception.FluentParseException;
34
import net.quickwrite.fluent4j.util.args.FluentArgs;
45
import net.quickwrite.fluent4j.util.bundle.DirectFluentBundle;
56
import net.quickwrite.fluent4j.ast.placeable.NumberLiteral;
@@ -21,14 +22,18 @@ public class FluentVariant implements FluentElement {
2122
private final FluentPlaceable identifier;
2223
private final FluentAttribute content;
2324

24-
public FluentVariant(FluentAttribute content) {
25+
public FluentVariant(final FluentAttribute content) {
2526
this.identifier = getIdentifier(content.identifier);
2627
this.content = content;
2728
}
2829

29-
private FluentPlaceable getIdentifier(String slice) {
30+
private FluentPlaceable getIdentifier(final String slice) {
3031
if (Character.isDigit(slice.charAt(0))) {
31-
return NumberLiteral.getNumberLiteral(slice);
32+
try {
33+
return NumberLiteral.getNumberLiteral(slice);
34+
} catch (final NumberFormatException ignored) {
35+
throw new FluentParseException("Expected Number but got \"" + slice + "\"");
36+
}
3237
}
3338

3439
return new StringLiteral(slice);

src/main/java/net/quickwrite/fluent4j/util/StringSliceUtil.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,12 @@ private static FluentPlaceable expressionGetDefault(final StringSlice slice) {
179179
if (isTerm)
180180
slice.decrement();
181181

182-
return NumberLiteral.getNumberLiteral(getNumber(slice));
182+
final StringSlice number = getNumber(slice);
183+
try {
184+
return NumberLiteral.getNumberLiteral(number);
185+
} catch (final NumberFormatException ignored) {
186+
throw new FluentParseException("Number", number.toString(), number.getPosition() - number.length());
187+
}
183188
}
184189

185190
final StringSlice msgIdentifier = getIdentifier(slice);
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
package net.quickwrite.fluent4j;
2+
3+
import net.quickwrite.fluent4j.util.bundle.FluentBundle;
4+
import org.junit.Before;
5+
import org.junit.Test;
6+
import org.junit.jupiter.api.Assertions;
7+
8+
import java.io.IOException;
9+
10+
public class TestNumbers {
11+
private FluentBundle bundle;
12+
13+
@Before
14+
public void setUp() throws IOException {
15+
this.bundle = GetFileHelper.getFluentBundle("numbers.ftl");
16+
}
17+
18+
@Test
19+
public void testIfExceptions() {
20+
Assertions.assertTrue(bundle.hasExceptions());
21+
}
22+
23+
@Test
24+
public void testIntZero() {
25+
Assertions.assertEquals("0", GetFileHelper.getMessage(bundle, "int-zero"));
26+
}
27+
28+
@Test
29+
public void testIntPositive() {
30+
Assertions.assertEquals("1", GetFileHelper.getMessage(bundle, "int-positive"));
31+
}
32+
33+
@Test
34+
public void testIntNegative() {
35+
Assertions.assertEquals("-1", GetFileHelper.getMessage(bundle, "int-negative"));
36+
}
37+
38+
@Test
39+
public void testIntNegativeZero() {
40+
Assertions.assertEquals("0", GetFileHelper.getMessage(bundle, "int-negative-zero"));
41+
}
42+
43+
@Test
44+
public void testIntPositivePadded() {
45+
Assertions.assertEquals("1", GetFileHelper.getMessage(bundle, "int-positive-padded"));
46+
}
47+
48+
@Test
49+
public void testIntNegativePadded() {
50+
Assertions.assertEquals("-1", GetFileHelper.getMessage(bundle, "int-negative-padded"));
51+
}
52+
53+
@Test
54+
public void testIntZeroPadded() {
55+
Assertions.assertEquals("0", GetFileHelper.getMessage(bundle, "int-zero-padded"));
56+
}
57+
58+
@Test
59+
public void testIntNegativeZeroPadded() {
60+
Assertions.assertEquals("0", GetFileHelper.getMessage(bundle, "int-negative-zero-padded"));
61+
}
62+
63+
@Test
64+
public void testFloatZero() {
65+
Assertions.assertEquals("0", GetFileHelper.getMessage(bundle, "float-zero"));
66+
}
67+
68+
@Test
69+
public void testFloatPositive() {
70+
Assertions.assertEquals("0.01", GetFileHelper.getMessage(bundle, "float-positive"));
71+
}
72+
73+
@Test
74+
public void testFloatPositiveOne() {
75+
Assertions.assertEquals("1.03", GetFileHelper.getMessage(bundle, "float-positive-one"));
76+
}
77+
78+
@Test
79+
public void testFloatPositiveWithoutFraction() {
80+
Assertions.assertEquals("1", GetFileHelper.getMessage(bundle, "float-positive-without-fraction"));
81+
}
82+
83+
@Test
84+
public void testFloatNegative() {
85+
Assertions.assertEquals("-0.01", GetFileHelper.getMessage(bundle, "float-negative"));
86+
}
87+
88+
@Test
89+
public void testFloatNegativeOne() {
90+
Assertions.assertEquals("-1.03", GetFileHelper.getMessage(bundle, "float-negative-one"));
91+
}
92+
93+
@Test
94+
public void testFloatNegativeWithoutFraction() {
95+
Assertions.assertEquals("-1", GetFileHelper.getMessage(bundle, "float-negative-without-fraction"));
96+
}
97+
98+
@Test
99+
public void testFloatPositivePaddedLeft() {
100+
Assertions.assertEquals("1.03", GetFileHelper.getMessage(bundle, "float-positive-padded-left"));
101+
}
102+
103+
@Test
104+
public void testFloatPositivePaddedRight() {
105+
Assertions.assertEquals("1.03", GetFileHelper.getMessage(bundle, "float-positive-padded-right"));
106+
}
107+
108+
@Test
109+
public void testFloatPositivePaddedBoth() {
110+
Assertions.assertEquals("1.03", GetFileHelper.getMessage(bundle, "float-positive-padded-both"));
111+
}
112+
113+
@Test
114+
public void testFloatNegativePaddedLeft() {
115+
Assertions.assertEquals("-1.03", GetFileHelper.getMessage(bundle, "float-negative-padded-left"));
116+
}
117+
118+
@Test
119+
public void testFloatNegativePaddedRight() {
120+
Assertions.assertEquals("-1.03", GetFileHelper.getMessage(bundle, "float-negative-padded-right"));
121+
}
122+
123+
@Test
124+
public void testFloatNegativePaddedBoth() {
125+
Assertions.assertEquals("-1.03", GetFileHelper.getMessage(bundle, "float-negative-padded-both"));
126+
}
127+
}

0 commit comments

Comments
 (0)