java-commons/src/test/java/de/nclazz/commons/util/CanonTest.java

52 lines
1.3 KiB
Java

package de.nclazz.commons.util;
import lombok.EqualsAndHashCode;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CanonTest {
@EqualsAndHashCode
public static class ImmutableClass {
final String str;
final int integer;
public ImmutableClass(String str, int integer) {
this.str = str;
this.integer = integer;
}
}
@Test
void equalityTest() {
Canon<ImmutableClass> canon = new Canon<>();
ImmutableClass objectA = canon.getCanonical(new ImmutableClass("myString", 12));
for(int i = 0; i < 24; i++) {
ImmutableClass objectCanon = canon.getCanonical(new ImmutableClass("myString", 12));
assertEquals(objectA, objectCanon);
assertSame(objectA, objectCanon, () -> String.format("a: %s == %s", objectA, objectCanon));
}
}
@Test
void equalityTestGlobal() {
ImmutableClass objectA = Canon.canonical(new ImmutableClass("myString", 12));
for(int i = 0; i < 24; i++) {
ImmutableClass objectCanon = Canon.canonical(new ImmutableClass("myString", 12));
assertEquals(objectA, objectCanon);
assertSame(objectA, objectCanon, () -> String.format("a: %s == %s", objectA, objectCanon));
}
}
}