Skip to content

Commit

Permalink
Improve non-finite floating point tests
Browse files Browse the repository at this point in the history
Because there is only `Gson.toJson(Object)` (and no primitive specific
overloads) the tests were previously testing the adapter for the boxed
object, e.g. Double, twice.
  • Loading branch information
Marcono1234 committed Jun 7, 2024
1 parent 3a88a3d commit 512cea3
Showing 1 changed file with 37 additions and 24 deletions.
61 changes: 37 additions & 24 deletions gson/src/test/java/com/google/gson/functional/PrimitiveTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -528,14 +528,15 @@ private static String extractElementFromArray(String json) {

@Test
public void testDoubleNaNSerializationNotSupportedByDefault() {
var e = assertThrows(IllegalArgumentException.class, () -> gson.toJson(Double.NaN));
var e =
assertThrows(IllegalArgumentException.class, () -> gson.toJson(Double.NaN, double.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
"NaN is not a valid double value as per JSON specification. To override this behavior,"
+ " use GsonBuilder.serializeSpecialFloatingPointValues() method.");

e = assertThrows(IllegalArgumentException.class, () -> gson.toJson((Double) Double.NaN));
e = assertThrows(IllegalArgumentException.class, () -> gson.toJson(Double.NaN, Double.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -546,8 +547,8 @@ public void testDoubleNaNSerializationNotSupportedByDefault() {
@Test
public void testDoubleNaNSerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
assertThat(gson.toJson(Double.NaN)).isEqualTo("NaN");
assertThat(gson.toJson((Double) Double.NaN)).isEqualTo("NaN");
assertThat(gson.toJson(Double.NaN, double.class)).isEqualTo("NaN");
assertThat(gson.toJson(Double.NaN, Double.class)).isEqualTo("NaN");
}

@Test
Expand All @@ -558,14 +559,14 @@ public void testDoubleNaNDeserialization() {

@Test
public void testFloatNaNSerializationNotSupportedByDefault() {
var e = assertThrows(IllegalArgumentException.class, () -> gson.toJson(Float.NaN));
var e = assertThrows(IllegalArgumentException.class, () -> gson.toJson(Float.NaN, float.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
"NaN is not a valid double value as per JSON specification. To override this behavior,"
+ " use GsonBuilder.serializeSpecialFloatingPointValues() method.");

e = assertThrows(IllegalArgumentException.class, () -> gson.toJson((Float) Float.NaN));
e = assertThrows(IllegalArgumentException.class, () -> gson.toJson(Float.NaN, Float.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -576,8 +577,8 @@ public void testFloatNaNSerializationNotSupportedByDefault() {
@Test
public void testFloatNaNSerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
assertThat(gson.toJson(Float.NaN)).isEqualTo("NaN");
assertThat(gson.toJson((Float) Float.NaN)).isEqualTo("NaN");
assertThat(gson.toJson(Float.NaN, float.class)).isEqualTo("NaN");
assertThat(gson.toJson(Float.NaN, Float.class)).isEqualTo("NaN");
}

@Test
Expand All @@ -595,7 +596,9 @@ public void testBigDecimalNaNDeserializationNotSupported() {
@Test
public void testDoubleInfinitySerializationNotSupportedByDefault() {
var e =
assertThrows(IllegalArgumentException.class, () -> gson.toJson(Double.POSITIVE_INFINITY));
assertThrows(
IllegalArgumentException.class,
() -> gson.toJson(Double.POSITIVE_INFINITY, double.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -604,7 +607,8 @@ public void testDoubleInfinitySerializationNotSupportedByDefault() {

e =
assertThrows(
IllegalArgumentException.class, () -> gson.toJson((Double) Double.POSITIVE_INFINITY));
IllegalArgumentException.class,
() -> gson.toJson(Double.POSITIVE_INFINITY, Double.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -615,8 +619,8 @@ public void testDoubleInfinitySerializationNotSupportedByDefault() {
@Test
public void testDoubleInfinitySerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
assertThat(gson.toJson(Double.POSITIVE_INFINITY)).isEqualTo("Infinity");
assertThat(gson.toJson((Double) Double.POSITIVE_INFINITY)).isEqualTo("Infinity");
assertThat(gson.toJson(Double.POSITIVE_INFINITY, double.class)).isEqualTo("Infinity");
assertThat(gson.toJson(Double.POSITIVE_INFINITY, Double.class)).isEqualTo("Infinity");
}

@Test
Expand All @@ -628,7 +632,9 @@ public void testDoubleInfinityDeserialization() {
@Test
public void testFloatInfinitySerializationNotSupportedByDefault() {
var e =
assertThrows(IllegalArgumentException.class, () -> gson.toJson(Float.POSITIVE_INFINITY));
assertThrows(
IllegalArgumentException.class,
() -> gson.toJson(Float.POSITIVE_INFINITY, float.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -637,7 +643,8 @@ public void testFloatInfinitySerializationNotSupportedByDefault() {

e =
assertThrows(
IllegalArgumentException.class, () -> gson.toJson((Float) Float.POSITIVE_INFINITY));
IllegalArgumentException.class,
() -> gson.toJson(Float.POSITIVE_INFINITY, Float.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -648,8 +655,8 @@ public void testFloatInfinitySerializationNotSupportedByDefault() {
@Test
public void testFloatInfinitySerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
assertThat(gson.toJson(Float.POSITIVE_INFINITY)).isEqualTo("Infinity");
assertThat(gson.toJson((Float) Float.POSITIVE_INFINITY)).isEqualTo("Infinity");
assertThat(gson.toJson(Float.POSITIVE_INFINITY, float.class)).isEqualTo("Infinity");
assertThat(gson.toJson(Float.POSITIVE_INFINITY, Float.class)).isEqualTo("Infinity");
}

@Test
Expand All @@ -667,7 +674,9 @@ public void testBigDecimalInfinityDeserializationNotSupported() {
@Test
public void testNegativeInfinitySerializationNotSupportedByDefault() {
var e =
assertThrows(IllegalArgumentException.class, () -> gson.toJson(Double.NEGATIVE_INFINITY));
assertThrows(
IllegalArgumentException.class,
() -> gson.toJson(Double.NEGATIVE_INFINITY, double.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -676,7 +685,8 @@ public void testNegativeInfinitySerializationNotSupportedByDefault() {

e =
assertThrows(
IllegalArgumentException.class, () -> gson.toJson((Double) Double.NEGATIVE_INFINITY));
IllegalArgumentException.class,
() -> gson.toJson(Double.NEGATIVE_INFINITY, Double.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -687,8 +697,8 @@ public void testNegativeInfinitySerializationNotSupportedByDefault() {
@Test
public void testNegativeInfinitySerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
assertThat(gson.toJson(Double.NEGATIVE_INFINITY)).isEqualTo("-Infinity");
assertThat(gson.toJson((Double) Double.NEGATIVE_INFINITY)).isEqualTo("-Infinity");
assertThat(gson.toJson(Double.NEGATIVE_INFINITY, double.class)).isEqualTo("-Infinity");
assertThat(gson.toJson(Double.NEGATIVE_INFINITY, Double.class)).isEqualTo("-Infinity");
}

@Test
Expand All @@ -700,7 +710,9 @@ public void testNegativeInfinityDeserialization() {
@Test
public void testNegativeInfinityFloatSerializationNotSupportedByDefault() {
var e =
assertThrows(IllegalArgumentException.class, () -> gson.toJson(Float.NEGATIVE_INFINITY));
assertThrows(
IllegalArgumentException.class,
() -> gson.toJson(Float.NEGATIVE_INFINITY, float.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -709,7 +721,8 @@ public void testNegativeInfinityFloatSerializationNotSupportedByDefault() {

e =
assertThrows(
IllegalArgumentException.class, () -> gson.toJson((Float) Float.NEGATIVE_INFINITY));
IllegalArgumentException.class,
() -> gson.toJson(Float.NEGATIVE_INFINITY, Float.class));
assertThat(e)
.hasMessageThat()
.isEqualTo(
Expand All @@ -720,8 +733,8 @@ public void testNegativeInfinityFloatSerializationNotSupportedByDefault() {
@Test
public void testNegativeInfinityFloatSerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
assertThat(gson.toJson(Float.NEGATIVE_INFINITY)).isEqualTo("-Infinity");
assertThat(gson.toJson((Float) Float.NEGATIVE_INFINITY)).isEqualTo("-Infinity");
assertThat(gson.toJson(Float.NEGATIVE_INFINITY, float.class)).isEqualTo("-Infinity");
assertThat(gson.toJson(Float.NEGATIVE_INFINITY, Float.class)).isEqualTo("-Infinity");
}

@Test
Expand Down

0 comments on commit 512cea3

Please sign in to comment.