diff --git a/src/test/java/net/minestom/server/api/Collector.java b/src/test/java/net/minestom/server/api/Collector.java new file mode 100644 index 000000000..98e3417bd --- /dev/null +++ b/src/test/java/net/minestom/server/api/Collector.java @@ -0,0 +1,21 @@ +package net.minestom.server.api; + +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.function.Consumer; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; + +public interface Collector { + @NotNull List<@NotNull T> collect(); + + default

void assertSingle(@NotNull Class

type, @NotNull Consumer

consumer) { + List elements = collect(); + assertEquals(1, elements.size(), "Expected 1 element, got " + elements); + var element = elements.get(0); + assertInstanceOf(type, element, "Expected type " + type.getSimpleName() + ", got " + element.getClass().getSimpleName()); + consumer.accept((P) element); + } +} diff --git a/src/test/java/net/minestom/server/api/TestConnection.java b/src/test/java/net/minestom/server/api/TestConnection.java index 02859cd22..a65874466 100644 --- a/src/test/java/net/minestom/server/api/TestConnection.java +++ b/src/test/java/net/minestom/server/api/TestConnection.java @@ -6,7 +6,6 @@ import net.minestom.server.instance.Instance; import net.minestom.server.network.packet.server.ServerPacket; import org.jetbrains.annotations.NotNull; -import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; @@ -18,15 +17,9 @@ public interface TestConnection { }); } - @NotNull PacketTracker trackIncoming(@NotNull Class type); + @NotNull Collector trackIncoming(@NotNull Class type); - default @NotNull PacketTracker trackIncoming() { + default @NotNull Collector trackIncoming() { return trackIncoming(ServerPacket.class); } - - interface PacketTracker { - @NotNull List<@NotNull T> collect(); - -

void assertSingle(Class

packetType, Consumer

consumer); - } } diff --git a/src/test/java/net/minestom/server/api/TestConnectionImpl.java b/src/test/java/net/minestom/server/api/TestConnectionImpl.java index fae6364df..aff828e0c 100644 --- a/src/test/java/net/minestom/server/api/TestConnectionImpl.java +++ b/src/test/java/net/minestom/server/api/TestConnectionImpl.java @@ -20,9 +20,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; - final class TestConnectionImpl implements TestConnection { private final Env env; private final ServerProcess process; @@ -59,7 +56,7 @@ final class TestConnectionImpl implements TestConnection { } @Override - public @NotNull PacketTracker trackIncoming(@NotNull Class type) { + public @NotNull Collector trackIncoming(@NotNull Class type) { var tracker = new TrackerImpl<>(type); this.incomingTrackers.add(TrackerImpl.class.cast(tracker)); return tracker; @@ -85,7 +82,7 @@ final class TestConnectionImpl implements TestConnection { } } - final class TrackerImpl implements PacketTracker { + final class TrackerImpl implements Collector { private final Class type; private final List packets = new CopyOnWriteArrayList<>(); @@ -98,14 +95,5 @@ final class TestConnectionImpl implements TestConnection { incomingTrackers.remove(this); return List.copyOf(packets); } - - @Override - public

void assertSingle(Class

packetType, Consumer

consumer) { - var packets = collect(); - assertEquals(1, packets.size(), "Expected 1 packet, got " + packets); - var packet = packets.get(0); - assertInstanceOf(packetType, packet, "Expected packet of type " + packetType.getSimpleName() + ", got " + packet.getClass().getSimpleName()); - consumer.accept((P) packet); - } } }