From 8760fcea1fdccbc260b0707b3019994085ed3e5e Mon Sep 17 00:00:00 2001 From: William Date: Wed, 13 Jul 2022 11:15:43 +0100 Subject: [PATCH] Fix tests --- .../husksync/data/DataAdaptionTests.java | 97 ++++++++++--------- .../husksync/logger/DummyLogger.java | 44 +++++++++ 2 files changed, 96 insertions(+), 45 deletions(-) create mode 100644 common/src/test/java/net/william278/husksync/logger/DummyLogger.java diff --git a/common/src/test/java/net/william278/husksync/data/DataAdaptionTests.java b/common/src/test/java/net/william278/husksync/data/DataAdaptionTests.java index a9c6c11f..2da22ec8 100644 --- a/common/src/test/java/net/william278/husksync/data/DataAdaptionTests.java +++ b/common/src/test/java/net/william278/husksync/data/DataAdaptionTests.java @@ -1,11 +1,14 @@ package net.william278.husksync.data; +import net.william278.husksync.logger.DummyLogger; import net.william278.husksync.player.DummyPlayer; import net.william278.husksync.player.OnlineUser; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; /** * Tests for the data system {@link DataAdapter} @@ -15,64 +18,68 @@ public class DataAdaptionTests { @Test public void testJsonDataAdapter() { final OnlineUser dummyUser = DummyPlayer.create(); - final UserData dummyUserData = dummyUser.getUserData().join(); - final DataAdapter dataAdapter = new JsonDataAdapter(); - final byte[] data = dataAdapter.toBytes(dummyUserData); - final UserData deserializedUserData = dataAdapter.fromBytes(data); + final AtomicBoolean isEquals = new AtomicBoolean(false); + dummyUser.getUserData(new DummyLogger()).join().ifPresent(dummyUserData -> { + final DataAdapter dataAdapter = new JsonDataAdapter(); + final byte[] data = dataAdapter.toBytes(dummyUserData); + final UserData deserializedUserData = dataAdapter.fromBytes(data); - boolean isEquals = deserializedUserData.getInventoryData().serializedItems - .equals(dummyUserData.getInventoryData().serializedItems) - && deserializedUserData.getEnderChestData().serializedItems - .equals(dummyUserData.getEnderChestData().serializedItems) - && deserializedUserData.getPotionEffectsData().serializedPotionEffects - .equals(dummyUserData.getPotionEffectsData().serializedPotionEffects) - && deserializedUserData.getStatusData().health == dummyUserData.getStatusData().health - && deserializedUserData.getStatusData().hunger == dummyUserData.getStatusData().hunger - && deserializedUserData.getStatusData().saturation == dummyUserData.getStatusData().saturation - && deserializedUserData.getStatusData().saturationExhaustion == dummyUserData.getStatusData().saturationExhaustion - && deserializedUserData.getStatusData().selectedItemSlot == dummyUserData.getStatusData().selectedItemSlot - && deserializedUserData.getStatusData().totalExperience == dummyUserData.getStatusData().totalExperience - && deserializedUserData.getStatusData().maxHealth == dummyUserData.getStatusData().maxHealth - && deserializedUserData.getStatusData().healthScale == dummyUserData.getStatusData().healthScale; - - Assertions.assertTrue(isEquals); + isEquals.set(deserializedUserData.getInventoryData().serializedItems + .equals(dummyUserData.getInventoryData().serializedItems) + && deserializedUserData.getEnderChestData().serializedItems + .equals(dummyUserData.getEnderChestData().serializedItems) + && deserializedUserData.getPotionEffectsData().serializedPotionEffects + .equals(dummyUserData.getPotionEffectsData().serializedPotionEffects) + && deserializedUserData.getStatusData().health == dummyUserData.getStatusData().health + && deserializedUserData.getStatusData().hunger == dummyUserData.getStatusData().hunger + && deserializedUserData.getStatusData().saturation == dummyUserData.getStatusData().saturation + && deserializedUserData.getStatusData().saturationExhaustion == dummyUserData.getStatusData().saturationExhaustion + && deserializedUserData.getStatusData().selectedItemSlot == dummyUserData.getStatusData().selectedItemSlot + && deserializedUserData.getStatusData().totalExperience == dummyUserData.getStatusData().totalExperience + && deserializedUserData.getStatusData().maxHealth == dummyUserData.getStatusData().maxHealth + && deserializedUserData.getStatusData().healthScale == dummyUserData.getStatusData().healthScale); + }); + Assertions.assertTrue(isEquals.get()); } @Test public void testJsonFormat() { final OnlineUser dummyUser = DummyPlayer.create(); - final UserData dummyUserData = dummyUser.getUserData().join(); - final DataAdapter dataAdapter = new JsonDataAdapter(); - final byte[] data = dataAdapter.toBytes(dummyUserData); - final String json = new String(data, StandardCharsets.UTF_8); final String expectedJson = "{\"status\":{\"health\":20.0,\"max_health\":20.0,\"health_scale\":0.0,\"hunger\":20,\"saturation\":5.0,\"saturation_exhaustion\":5.0,\"selected_item_slot\":1,\"total_experience\":100,\"experience_level\":1,\"experience_progress\":1.0,\"game_mode\":\"SURVIVAL\",\"is_flying\":false},\"inventory\":{\"serialized_items\":\"\"},\"ender_chest\":{\"serialized_items\":\"\"},\"potion_effects\":{\"serialized_potion_effects\":\"\"},\"advancements\":[],\"statistics\":{\"untyped_statistics\":{},\"block_statistics\":{},\"item_statistics\":{},\"entity_statistics\":{}},\"location\":{\"world_name\":\"dummy_world\",\"world_uuid\":\"00000000-0000-0000-0000-000000000000\",\"world_environment\":\"NORMAL\",\"x\":0.0,\"y\":64.0,\"z\":0.0,\"yaw\":90.0,\"pitch\":180.0},\"persistent_data_container\":{\"persistent_data_map\":{}},\"minecraft_version\":\"1.19-beta123456\",\"format_version\":1}"; - Assertions.assertEquals(expectedJson, json); + AtomicReference json = new AtomicReference<>(); + dummyUser.getUserData(new DummyLogger()).join().ifPresent(dummyUserData -> { + final DataAdapter dataAdapter = new JsonDataAdapter(); + final byte[] data = dataAdapter.toBytes(dummyUserData); + json.set(new String(data, StandardCharsets.UTF_8)); + }); + Assertions.assertEquals(expectedJson, json.get()); } @Test public void testCompressedDataAdapter() { final OnlineUser dummyUser = DummyPlayer.create(); - final UserData dummyUserData = dummyUser.getUserData().join(); - final DataAdapter dataAdapter = new CompressedDataAdapter(); - final byte[] data = dataAdapter.toBytes(dummyUserData); - final UserData deserializedUserData = dataAdapter.fromBytes(data); - - boolean isEquals = deserializedUserData.getInventoryData().serializedItems - .equals(dummyUserData.getInventoryData().serializedItems) - && deserializedUserData.getEnderChestData().serializedItems - .equals(dummyUserData.getEnderChestData().serializedItems) - && deserializedUserData.getPotionEffectsData().serializedPotionEffects - .equals(dummyUserData.getPotionEffectsData().serializedPotionEffects) - && deserializedUserData.getStatusData().health == dummyUserData.getStatusData().health - && deserializedUserData.getStatusData().hunger == dummyUserData.getStatusData().hunger - && deserializedUserData.getStatusData().saturation == dummyUserData.getStatusData().saturation - && deserializedUserData.getStatusData().saturationExhaustion == dummyUserData.getStatusData().saturationExhaustion - && deserializedUserData.getStatusData().selectedItemSlot == dummyUserData.getStatusData().selectedItemSlot - && deserializedUserData.getStatusData().totalExperience == dummyUserData.getStatusData().totalExperience - && deserializedUserData.getStatusData().maxHealth == dummyUserData.getStatusData().maxHealth - && deserializedUserData.getStatusData().healthScale == dummyUserData.getStatusData().healthScale; + AtomicBoolean isEquals = new AtomicBoolean(false); + dummyUser.getUserData(new DummyLogger()).join().ifPresent(dummyUserData -> { + final DataAdapter dataAdapter = new CompressedDataAdapter(); + final byte[] data = dataAdapter.toBytes(dummyUserData); + final UserData deserializedUserData = dataAdapter.fromBytes(data); - Assertions.assertTrue(isEquals); + isEquals.set(deserializedUserData.getInventoryData().serializedItems + .equals(dummyUserData.getInventoryData().serializedItems) + && deserializedUserData.getEnderChestData().serializedItems + .equals(dummyUserData.getEnderChestData().serializedItems) + && deserializedUserData.getPotionEffectsData().serializedPotionEffects + .equals(dummyUserData.getPotionEffectsData().serializedPotionEffects) + && deserializedUserData.getStatusData().health == dummyUserData.getStatusData().health + && deserializedUserData.getStatusData().hunger == dummyUserData.getStatusData().hunger + && deserializedUserData.getStatusData().saturation == dummyUserData.getStatusData().saturation + && deserializedUserData.getStatusData().saturationExhaustion == dummyUserData.getStatusData().saturationExhaustion + && deserializedUserData.getStatusData().selectedItemSlot == dummyUserData.getStatusData().selectedItemSlot + && deserializedUserData.getStatusData().totalExperience == dummyUserData.getStatusData().totalExperience + && deserializedUserData.getStatusData().maxHealth == dummyUserData.getStatusData().maxHealth + && deserializedUserData.getStatusData().healthScale == dummyUserData.getStatusData().healthScale); + }); + Assertions.assertTrue(isEquals.get()); } } diff --git a/common/src/test/java/net/william278/husksync/logger/DummyLogger.java b/common/src/test/java/net/william278/husksync/logger/DummyLogger.java new file mode 100644 index 00000000..c44378a1 --- /dev/null +++ b/common/src/test/java/net/william278/husksync/logger/DummyLogger.java @@ -0,0 +1,44 @@ +package net.william278.husksync.logger; + +import de.themoep.minedown.MineDown; +import net.william278.husksync.util.Logger; +import org.jetbrains.annotations.NotNull; + +import java.util.logging.Level; + +public class DummyLogger extends Logger { + + public DummyLogger() { + } + + @Override + public void log(@NotNull Level level, @NotNull String message, @NotNull Exception e) { + System.out.println(level.getName() + ": " + message); + e.printStackTrace(); + } + + @Override + public void log(@NotNull Level level, @NotNull String message) { + System.out.println(level.getName() + ": " + message); + } + + @Override + public void log(@NotNull Level level, @NotNull MineDown mineDown) { + System.out.println(level.getName() + ": " + mineDown.message()); + } + + @Override + public void info(@NotNull String message) { + System.out.println(Level.INFO.getName() + ": " + message); + } + + @Override + public void severe(@NotNull String message) { + System.out.println(Level.SEVERE.getName() + ": " + message); + } + + @Override + public void config(@NotNull String message) { + System.out.println(Level.CONFIG.getName() + ": " + message); + } +}