Fix tests

feat/data-edit-commands
William 3 years ago
parent 60a3bba165
commit 8760fcea1f

@ -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<String> 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());
}
}

@ -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);
}
}
Loading…
Cancel
Save