Skip to content

Commit 96b5701

Browse files
committed
Adding support for special doubles
Signed-off-by: Paulo Lopes <pmlopes@gmail.com>
1 parent 2d8b23a commit 96b5701

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

src/main/java/io/vertx/redis/client/Response.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,17 @@ default Number toNumber() {
9393
default @Nullable Double toDouble() {
9494
final String msg = toString();
9595
if (msg != null) {
96-
return Double.parseDouble(msg);
96+
switch (msg) {
97+
case "-nan":
98+
case "nan":
99+
return Double.NaN;
100+
case "inf":
101+
return Double.POSITIVE_INFINITY;
102+
case "-inf":
103+
return Double.NEGATIVE_INFINITY;
104+
default:
105+
return Double.parseDouble(msg);
106+
}
97107
}
98108
return null;
99109
}

src/main/java/io/vertx/redis/client/impl/ReadableBuffer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ Number readNumber(int end, NumericType type) {
113113
case DECIMAL:
114114
if (bytes.length == 3 && bytes[0] == 'i' && bytes[1] == 'n' && bytes[2] == 'f') {
115115
number = Double.POSITIVE_INFINITY;
116+
} else if (bytes.length == 3 && bytes[0] == 'n' && bytes[1] == 'a' && bytes[2] == 'n') {
117+
number = Double.NaN;
116118
} else if (bytes.length == 4 && bytes[0] == '-' && bytes[1] == 'i' && bytes[2] == 'n' && bytes[3] == 'f') {
117119
number = Double.NEGATIVE_INFINITY;
118120
} else {

src/test/java/io/vertx/test/redis/RedisClient7Test.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,4 +254,17 @@ public void testBooleanVarArgs(TestContext should) {
254254
});
255255
});
256256
}
257+
258+
@Test
259+
public void testNaN(TestContext should) {
260+
final Async test = should.async();
261+
final String key = makeKey();
262+
263+
client.send(cmd(EVAL).arg("return tostring(0/0)").arg(0))
264+
.onFailure(should::fail)
265+
.onSuccess(ok -> {
266+
should.assertTrue(Double.isNaN(ok.toDouble()));
267+
test.complete();
268+
});
269+
}
257270
}

0 commit comments

Comments
 (0)