30 lines
1.5 KiB
Java
30 lines
1.5 KiB
Java
package com.baiyue.common.event;
|
|||
|
|
|
||
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||
|
|
import org.junit.jupiter.api.Test;
|
||
|
|
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||
|
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||
|
|
|
||
|
|
class EventPayloadCanonicalizerTest {
|
||
|
|
private final ObjectMapper json = new ObjectMapper();
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void equivalentNumberLexemesHaveTheSameCanonicalFormAndHash() throws Exception {
|
||
|
|
var scaled = json.readTree("{\"weight\":30.0,\"volume\":0.3150,\"quantity\":3}");
|
||
|
|
var normalized = json.readTree("{\"quantity\":3.0,\"volume\":0.315,\"weight\":3E+1}");
|
||
|
|
assertArrayEquals(EventPayloadCanonicalizer.canonicalize(scaled), EventPayloadCanonicalizer.canonicalize(normalized));
|
||
|
|
assertEquals(EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(scaled)),
|
||
|
|
EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(normalized)));
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void negativeZeroIsZeroAndLegacyHashRemainsAvailable() throws Exception {
|
||
|
|
var negativeZero = json.readTree("{\"value\":-0.000}");
|
||
|
|
var zero = json.readTree("{\"value\":0}");
|
||
|
|
assertArrayEquals(EventPayloadCanonicalizer.canonicalize(negativeZero), EventPayloadCanonicalizer.canonicalize(zero));
|
||
|
|
assertNotEquals(EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(negativeZero)),
|
||
|
|
EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalizeLegacy(negativeZero)));
|
||
|
|
}
|
||
|
|
}
|