Skip to content

Commit a7df9a3

Browse files
committed
Minor cleanups
1 parent 3b67aec commit a7df9a3

File tree

3 files changed

+33
-21
lines changed

3 files changed

+33
-21
lines changed

test/protocol-tests-core/src/main/java/software/amazon/awssdk/protocol/asserts/marshalling/CborBodyAssertion.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,23 @@ protected void doAssert(LoggedRequest actual) throws Exception {
4545
assertEquals(expected, actualJson);
4646
}
4747

48+
/**
49+
* CBOR allows serializing floating point numbers to different sizes (eg, float16/32/64).
50+
* However, in assertEquals float and double nodes will never be equal so we convert them
51+
* all to doubles.
52+
*/
4853
private JsonNode normalizeToDoubles(JsonNode node) {
4954
if (node.isFloat() || node.isDouble()) {
5055
return DoubleNode.valueOf(node.doubleValue());
51-
} else if (node.isInt() || node.isLong() || node.isShort() || node.isBigInteger() || node.isBigDecimal()) {
52-
return DoubleNode.valueOf(node.doubleValue());
53-
} else if (node.isArray()) {
56+
}
57+
if (node.isArray()) {
5458
ArrayNode array = MAPPER.createArrayNode();
5559
for (JsonNode item : node) {
5660
array.add(normalizeToDoubles(item));
5761
}
5862
return array;
59-
} else if (node.isObject()) {
63+
}
64+
if (node.isObject()) {
6065
ObjectNode obj = MAPPER.createObjectNode();
6166
node.fields().forEachRemaining(entry -> obj.set(entry.getKey(), normalizeToDoubles(entry.getValue())));
6267
return obj;

test/protocol-tests-core/src/main/java/software/amazon/awssdk/protocol/asserts/marshalling/JsonBodyAssertion.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,30 +45,34 @@ protected void doAssert(LoggedRequest actual) throws Exception {
4545
assertEquals(expected, actualJson);
4646
}
4747

48+
/**
49+
* We serialize some numbers (in particular epoch timestamps) as doubles such as 123.000.
50+
* In protocol tests, these values are parsed as longs. This conversion insures that
51+
* 123.000 will equal 123.
52+
*/
4853
public static JsonNode convertWholeNumberDoubleToLong(JsonNode node) {
54+
if (node.isDouble()) {
55+
double value = node.doubleValue();
56+
if (value % 1 == 0) {
57+
if (value >= Integer.MIN_VALUE && value <= Integer.MAX_VALUE) {
58+
return new IntNode((int) value);
59+
}
60+
return new LongNode((long) value);
61+
}
62+
}
4963
if (node.isObject()) {
5064
ObjectNode obj = (ObjectNode) node;
5165
ObjectNode result = obj.objectNode();
52-
obj.fieldNames().forEachRemaining(field -> {
53-
result.set(field, convertWholeNumberDoubleToLong(obj.get(field)));
54-
});
66+
obj.fieldNames().forEachRemaining(field -> result.set(field, convertWholeNumberDoubleToLong(obj.get(field))));
5567
return result;
56-
} else if (node.isArray()) {
68+
}
69+
if (node.isArray()) {
5770
ArrayNode array = (ArrayNode) node;
5871
ArrayNode result = array.arrayNode();
5972
for (JsonNode item : array) {
6073
result.add(convertWholeNumberDoubleToLong(item));
6174
}
6275
return result;
63-
} else if (node.isDouble()) {
64-
double value = node.doubleValue();
65-
if (value % 1 == 0) {
66-
if (value >= Integer.MIN_VALUE && value <= Integer.MAX_VALUE) {
67-
return new IntNode((int) value);
68-
} else {
69-
return new LongNode((long) value);
70-
}
71-
}
7276
}
7377
return node;
7478
}

test/protocol-tests-core/src/main/java/software/amazon/awssdk/protocol/asserts/marshalling/QueryParamsAssertion.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515

1616
package software.amazon.awssdk.protocol.asserts.marshalling;
1717

18+
import static org.hamcrest.MatcherAssert.assertThat;
1819
import static org.hamcrest.Matchers.containsInAnyOrder;
1920
import static org.hamcrest.Matchers.equalTo;
2021
import static org.hamcrest.Matchers.not;
2122
import static org.hamcrest.collection.IsMapContaining.hasKey;
22-
import static org.junit.Assert.assertThat;
23+
import static org.junit.Assert.assertNotNull;
2324
import static software.amazon.awssdk.protocol.asserts.marshalling.QueryUtils.parseQueryParams;
2425
import static software.amazon.awssdk.protocol.asserts.marshalling.QueryUtils.parseQueryParamsFromBody;
2526

@@ -68,6 +69,8 @@ protected void doAssert(LoggedRequest actual) throws Exception {
6869
}
6970

7071
private void doAssert(Map<String, List<String>> actualParams) {
72+
assertNotNull(actualParams);
73+
7174
if (contains != null) {
7275
assertContains(actualParams);
7376
}
@@ -87,7 +90,7 @@ private void doAssert(Map<String, List<String>> actualParams) {
8790

8891

8992
private void assertContains(Map<String, List<String>> actualParams) {
90-
contains.entrySet().forEach(e -> assertThat(actualParams.get(e.getKey()), containsInAnyOrder(e.getValue().toArray())));
93+
contains.forEach((key, value) -> assertThat(actualParams.get(key), containsInAnyOrder(value.toArray())));
9194
}
9295

9396
private void assertDoesNotContain(Map<String, List<String>> actualParams) {
@@ -100,8 +103,8 @@ private void assertMustContain(Map<String, List<String>> actualParams) {
100103

101104
private void assertContainsOnly(Map<String, List<String>> actualParams) {
102105
assertThat(actualParams.keySet(), equalTo(containsOnly.keySet()));
103-
containsOnly.entrySet().forEach(e -> assertThat(
104-
actualParams.get(e.getKey()), containsInAnyOrder(e.getValue().toArray())
106+
containsOnly.forEach((key, value) -> assertThat(
107+
actualParams.get(key), containsInAnyOrder(value.toArray())
105108
));
106109
}
107110

0 commit comments

Comments
 (0)