1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00

Added version compat tests

This commit is contained in:
TheBusyBiscuit 2021-12-09 13:31:04 +01:00
parent 5ba049d29c
commit 829a7d6bf6
6 changed files with 542 additions and 0 deletions

View File

@ -0,0 +1,161 @@
package io.github.thebusybiscuit.slimefun4.utils.biomes;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.EnumSource;
import org.junit.jupiter.params.provider.MethodSource;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion;
import io.github.thebusybiscuit.slimefun4.implementation.Slimefun;
import be.seeseemelk.mockbukkit.MockBukkit;
/**
* This test checks if biome maps work across multiple versions of Minecraft.
* A similar test can be written for Material Tags :?
*
* @author TheBusyBiscuit
*
*/
class TestBiomeMapCompatibility {
private static final Map<MinecraftVersion, JsonArray> compatibilityMap = new EnumMap<>(MinecraftVersion.class);
@BeforeAll
public static void load() {
MockBukkit.mock();
for (MinecraftVersion version : MinecraftVersion.values()) {
if (!version.isVirtual()) {
loadBiomes(version);
}
}
}
@AfterAll
public static void unload() {
MockBukkit.unmock();
}
private static void loadBiomes(@Nonnull MinecraftVersion version) {
String path = "/biomes/" + version.getName() + ".json";
if (Slimefun.class.getResource(path) == null) {
return;
}
try (BufferedReader reader = new BufferedReader(new InputStreamReader(Slimefun.class.getResourceAsStream(path), StandardCharsets.UTF_8))) {
JsonParser parser = new JsonParser();
JsonArray biomes = parser.parse(reader.lines().collect(Collectors.joining(""))).getAsJsonArray();
compatibilityMap.put(version, biomes);
} catch (IOException x) {
x.printStackTrace();
}
}
@ParameterizedTest(name = "Test if {0} has a biome resource")
@EnumSource(value = MinecraftVersion.class)
void testMissingBiomeResources(@Nonnull MinecraftVersion version) {
if (!version.isVirtual()) {
Assertions.assertTrue(compatibilityMap.containsKey(version));
}
}
@ParameterizedTest(name = "Test if biome-map {0}.json is compatible with {1}")
@MethodSource("biomeMaps")
@ParametersAreNonnullByDefault
void testCompatibilities(String name, MinecraftVersion version) {
assertCompatibility(name, version);
}
private static @Nonnull Stream<Arguments> biomeMaps() {
Map<String, MinecraftVersion[]> testCases = new HashMap<>();
// @formatter:off
testCases.put("nether_ice", new MinecraftVersion[] {
MinecraftVersion.MINECRAFT_1_14,
MinecraftVersion.MINECRAFT_1_15,
MinecraftVersion.MINECRAFT_1_16,
MinecraftVersion.MINECRAFT_1_17
});
testCases.put("oil", new MinecraftVersion[] {
MinecraftVersion.MINECRAFT_1_14,
MinecraftVersion.MINECRAFT_1_15,
MinecraftVersion.MINECRAFT_1_16,
MinecraftVersion.MINECRAFT_1_17
});
testCases.put("salt", new MinecraftVersion[] {
MinecraftVersion.MINECRAFT_1_14,
MinecraftVersion.MINECRAFT_1_15,
MinecraftVersion.MINECRAFT_1_16,
MinecraftVersion.MINECRAFT_1_17
});
testCases.put("uranium", new MinecraftVersion[] {
MinecraftVersion.MINECRAFT_1_14,
MinecraftVersion.MINECRAFT_1_15,
MinecraftVersion.MINECRAFT_1_16,
MinecraftVersion.MINECRAFT_1_17
});
// @formatter:on
return testCases.entrySet().stream().flatMap(entry -> {
return Arrays.stream(entry.getValue()).map(version -> Arguments.of(entry.getKey(), version));
});
}
@ParametersAreNonnullByDefault
private void assertCompatibility(String name, MinecraftVersion version) {
JsonArray allBiomes = compatibilityMap.get(version);
String path = "/biome-maps/" + name + ".json";
try (BufferedReader reader = new BufferedReader(new InputStreamReader(Slimefun.class.getResourceAsStream(path), StandardCharsets.UTF_8))) {
JsonParser parser = new JsonParser();
JsonArray root = parser.parse(reader.lines().collect(Collectors.joining(""))).getAsJsonArray();
for (JsonElement element : root) {
JsonArray biomes = element.getAsJsonObject().getAsJsonArray("biomes");
checkBiomes(biomes, allBiomes, version);
}
} catch (IOException x) {
Assertions.fail(x);
}
}
@ParametersAreNonnullByDefault
private void checkBiomes(JsonArray biomes, JsonArray allBiomes, MinecraftVersion version) {
for (JsonElement biome : biomes) {
/*
* Assert that this biome exists within the list of all biomes
* for this version of Minecraft.
*/
Assertions.assertTrue(allBiomes.contains(biome), "Biome \"" + biome.getAsString() + "\" does not exist on Minecraft " + version.getName());
}
}
}

View File

@ -0,0 +1,77 @@
[
"minecraft:ocean",
"minecraft:plains",
"minecraft:desert",
"minecraft:mountains",
"minecraft:forest",
"minecraft:taiga",
"minecraft:swamp",
"minecraft:river",
"minecraft:nether",
"minecraft:the_end",
"minecraft:frozen_ocean",
"minecraft:frozen_river",
"minecraft:snowy_tundra",
"minecraft:snowy_mountains",
"minecraft:mushroom_fields",
"minecraft:mushroom_field_shore",
"minecraft:beach",
"minecraft:desert_hills",
"minecraft:wooded_hills",
"minecraft:taiga_hills",
"minecraft:mountain_edge",
"minecraft:jungle",
"minecraft:jungle_hills",
"minecraft:jungle_edge",
"minecraft:deep_ocean",
"minecraft:stone_shore",
"minecraft:snowy_beach",
"minecraft:birch_forest",
"minecraft:birch_forest_hills",
"minecraft:dark_forest",
"minecraft:snowy_taiga",
"minecraft:snowy_taiga_hills",
"minecraft:giant_tree_taiga",
"minecraft:giant_tree_taiga_hills",
"minecraft:wooded_mountains",
"minecraft:savanna",
"minecraft:savanna_plateau",
"minecraft:badlands",
"minecraft:wooded_badlands_plateau",
"minecraft:badlands_plateau",
"minecraft:small_end_islands",
"minecraft:end_midlands",
"minecraft:end_highlands",
"minecraft:end_barrens",
"minecraft:warm_ocean",
"minecraft:lukewarm_ocean",
"minecraft:cold_ocean",
"minecraft:deep_warm_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:deep_cold_ocean",
"minecraft:deep_frozen_ocean",
"minecraft:the_void",
"minecraft:sunflower_plains",
"minecraft:desert_lakes",
"minecraft:gravelly_mountains",
"minecraft:flower_forest",
"minecraft:taiga_mountains",
"minecraft:swamp_hills",
"minecraft:ice_spikes",
"minecraft:modified_jungle",
"minecraft:modified_jungle_edge",
"minecraft:tall_birch_forest",
"minecraft:tall_birch_hills",
"minecraft:dark_forest_hills",
"minecraft:snowy_taiga_mountains",
"minecraft:giant_spruce_taiga",
"minecraft:giant_spruce_taiga_hills",
"minecraft:modified_gravelly_mountains",
"minecraft:shattered_savanna",
"minecraft:shattered_savanna_plateau",
"minecraft:eroded_badlands",
"minecraft:modified_wooded_badlands_plateau",
"minecraft:modified_badlands_plateau",
"minecraft:bamboo_jungle",
"minecraft:bamboo_jungle_hills"
]

View File

@ -0,0 +1,77 @@
[
"minecraft:ocean",
"minecraft:plains",
"minecraft:desert",
"minecraft:mountains",
"minecraft:forest",
"minecraft:taiga",
"minecraft:swamp",
"minecraft:river",
"minecraft:nether",
"minecraft:the_end",
"minecraft:frozen_ocean",
"minecraft:frozen_river",
"minecraft:snowy_tundra",
"minecraft:snowy_mountains",
"minecraft:mushroom_fields",
"minecraft:mushroom_field_shore",
"minecraft:beach",
"minecraft:desert_hills",
"minecraft:wooded_hills",
"minecraft:taiga_hills",
"minecraft:mountain_edge",
"minecraft:jungle",
"minecraft:jungle_hills",
"minecraft:jungle_edge",
"minecraft:deep_ocean",
"minecraft:stone_shore",
"minecraft:snowy_beach",
"minecraft:birch_forest",
"minecraft:birch_forest_hills",
"minecraft:dark_forest",
"minecraft:snowy_taiga",
"minecraft:snowy_taiga_hills",
"minecraft:giant_tree_taiga",
"minecraft:giant_tree_taiga_hills",
"minecraft:wooded_mountains",
"minecraft:savanna",
"minecraft:savanna_plateau",
"minecraft:badlands",
"minecraft:wooded_badlands_plateau",
"minecraft:badlands_plateau",
"minecraft:small_end_islands",
"minecraft:end_midlands",
"minecraft:end_highlands",
"minecraft:end_barrens",
"minecraft:warm_ocean",
"minecraft:lukewarm_ocean",
"minecraft:cold_ocean",
"minecraft:deep_warm_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:deep_cold_ocean",
"minecraft:deep_frozen_ocean",
"minecraft:the_void",
"minecraft:sunflower_plains",
"minecraft:desert_lakes",
"minecraft:gravelly_mountains",
"minecraft:flower_forest",
"minecraft:taiga_mountains",
"minecraft:swamp_hills",
"minecraft:ice_spikes",
"minecraft:modified_jungle",
"minecraft:modified_jungle_edge",
"minecraft:tall_birch_forest",
"minecraft:tall_birch_hills",
"minecraft:dark_forest_hills",
"minecraft:snowy_taiga_mountains",
"minecraft:giant_spruce_taiga",
"minecraft:giant_spruce_taiga_hills",
"minecraft:modified_gravelly_mountains",
"minecraft:shattered_savanna",
"minecraft:shattered_savanna_plateau",
"minecraft:eroded_badlands",
"minecraft:modified_wooded_badlands_plateau",
"minecraft:modified_badlands_plateau",
"minecraft:bamboo_jungle",
"minecraft:bamboo_jungle_hills"
]

View File

@ -0,0 +1,81 @@
[
"minecraft:ocean",
"minecraft:plains",
"minecraft:desert",
"minecraft:mountains",
"minecraft:forest",
"minecraft:taiga",
"minecraft:swamp",
"minecraft:river",
"minecraft:nether_wastes",
"minecraft:the_end",
"minecraft:frozen_ocean",
"minecraft:frozen_river",
"minecraft:snowy_tundra",
"minecraft:snowy_mountains",
"minecraft:mushroom_fields",
"minecraft:mushroom_field_shore",
"minecraft:beach",
"minecraft:desert_hills",
"minecraft:wooded_hills",
"minecraft:taiga_hills",
"minecraft:mountain_edge",
"minecraft:jungle",
"minecraft:jungle_hills",
"minecraft:jungle_edge",
"minecraft:deep_ocean",
"minecraft:stone_shore",
"minecraft:snowy_beach",
"minecraft:birch_forest",
"minecraft:birch_forest_hills",
"minecraft:dark_forest",
"minecraft:snowy_taiga",
"minecraft:snowy_taiga_hills",
"minecraft:giant_tree_taiga",
"minecraft:giant_tree_taiga_hills",
"minecraft:wooded_mountains",
"minecraft:savanna",
"minecraft:savanna_plateau",
"minecraft:badlands",
"minecraft:wooded_badlands_plateau",
"minecraft:badlands_plateau",
"minecraft:small_end_islands",
"minecraft:end_midlands",
"minecraft:end_highlands",
"minecraft:end_barrens",
"minecraft:warm_ocean",
"minecraft:lukewarm_ocean",
"minecraft:cold_ocean",
"minecraft:deep_warm_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:deep_cold_ocean",
"minecraft:deep_frozen_ocean",
"minecraft:the_void",
"minecraft:sunflower_plains",
"minecraft:desert_lakes",
"minecraft:gravelly_mountains",
"minecraft:flower_forest",
"minecraft:taiga_mountains",
"minecraft:swamp_hills",
"minecraft:ice_spikes",
"minecraft:modified_jungle",
"minecraft:modified_jungle_edge",
"minecraft:tall_birch_forest",
"minecraft:tall_birch_hills",
"minecraft:dark_forest_hills",
"minecraft:snowy_taiga_mountains",
"minecraft:giant_spruce_taiga",
"minecraft:giant_spruce_taiga_hills",
"minecraft:modified_gravelly_mountains",
"minecraft:shattered_savanna",
"minecraft:shattered_savanna_plateau",
"minecraft:eroded_badlands",
"minecraft:modified_wooded_badlands_plateau",
"minecraft:modified_badlands_plateau",
"minecraft:bamboo_jungle",
"minecraft:bamboo_jungle_hills",
"minecraft:soul_sand_valley",
"minecraft:crimson_forest",
"minecraft:warped_forest",
"minecraft:basalt_deltas"
]

View File

@ -0,0 +1,83 @@
[
"minecraft:ocean",
"minecraft:plains",
"minecraft:desert",
"minecraft:mountains",
"minecraft:forest",
"minecraft:taiga",
"minecraft:swamp",
"minecraft:river",
"minecraft:nether_wastes",
"minecraft:the_end",
"minecraft:frozen_ocean",
"minecraft:frozen_river",
"minecraft:snowy_tundra",
"minecraft:snowy_mountains",
"minecraft:mushroom_fields",
"minecraft:mushroom_field_shore",
"minecraft:beach",
"minecraft:desert_hills",
"minecraft:wooded_hills",
"minecraft:taiga_hills",
"minecraft:mountain_edge",
"minecraft:jungle",
"minecraft:jungle_hills",
"minecraft:jungle_edge",
"minecraft:deep_ocean",
"minecraft:stone_shore",
"minecraft:snowy_beach",
"minecraft:birch_forest",
"minecraft:birch_forest_hills",
"minecraft:dark_forest",
"minecraft:snowy_taiga",
"minecraft:snowy_taiga_hills",
"minecraft:giant_tree_taiga",
"minecraft:giant_tree_taiga_hills",
"minecraft:wooded_mountains",
"minecraft:savanna",
"minecraft:savanna_plateau",
"minecraft:badlands",
"minecraft:wooded_badlands_plateau",
"minecraft:badlands_plateau",
"minecraft:small_end_islands",
"minecraft:end_midlands",
"minecraft:end_highlands",
"minecraft:end_barrens",
"minecraft:warm_ocean",
"minecraft:lukewarm_ocean",
"minecraft:cold_ocean",
"minecraft:deep_warm_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:deep_cold_ocean",
"minecraft:deep_frozen_ocean",
"minecraft:the_void",
"minecraft:sunflower_plains",
"minecraft:desert_lakes",
"minecraft:gravelly_mountains",
"minecraft:flower_forest",
"minecraft:taiga_mountains",
"minecraft:swamp_hills",
"minecraft:ice_spikes",
"minecraft:modified_jungle",
"minecraft:modified_jungle_edge",
"minecraft:tall_birch_forest",
"minecraft:tall_birch_hills",
"minecraft:dark_forest_hills",
"minecraft:snowy_taiga_mountains",
"minecraft:giant_spruce_taiga",
"minecraft:giant_spruce_taiga_hills",
"minecraft:modified_gravelly_mountains",
"minecraft:shattered_savanna",
"minecraft:shattered_savanna_plateau",
"minecraft:eroded_badlands",
"minecraft:modified_wooded_badlands_plateau",
"minecraft:modified_badlands_plateau",
"minecraft:bamboo_jungle",
"minecraft:bamboo_jungle_hills",
"minecraft:soul_sand_valley",
"minecraft:crimson_forest",
"minecraft:warped_forest",
"minecraft:basalt_deltas",
"minecraft:dripstone_caves",
"minecraft:lush_caves"
]

View File

@ -0,0 +1,63 @@
[
"minecraft:ocean",
"minecraft:plains",
"minecraft:desert",
"minecraft:windswept_hills",
"minecraft:forest",
"minecraft:taiga",
"minecraft:swamp",
"minecraft:river",
"minecraft:nether_wastes",
"minecraft:the_end",
"minecraft:frozen_ocean",
"minecraft:frozen_river",
"minecraft:snowy_plains",
"minecraft:mushroom_fields",
"minecraft:beach",
"minecraft:jungle",
"minecraft:sparse_jungle",
"minecraft:deep_ocean",
"minecraft:stony_shore",
"minecraft:snowy_beach",
"minecraft:birch_forest",
"minecraft:dark_forest",
"minecraft:snowy_taiga",
"minecraft:old_growth_pine_taiga",
"minecraft:windswept_forest",
"minecraft:savanna",
"minecraft:savanna_plateau",
"minecraft:badlands",
"minecraft:wooded_badlands",
"minecraft:small_end_islands",
"minecraft:end_midlands",
"minecraft:end_highlands",
"minecraft:end_barrens",
"minecraft:warm_ocean",
"minecraft:lukewarm_ocean",
"minecraft:cold_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:deep_cold_ocean",
"minecraft:deep_frozen_ocean",
"minecraft:the_void",
"minecraft:sunflower_plains",
"minecraft:windswept_gravelly_hills",
"minecraft:flower_forest",
"minecraft:ice_spikes",
"minecraft:old_growth_birch_forest",
"minecraft:old_growth_spruce_taiga",
"minecraft:windswept_savanna",
"minecraft:eroded_badlands",
"minecraft:bamboo_jungle",
"minecraft:soul_sand_valley",
"minecraft:crimson_forest",
"minecraft:warped_forest",
"minecraft:basalt_deltas",
"minecraft:dripstone_caves",
"minecraft:lush_caves",
"minecraft:meadow",
"minecraft:grove",
"minecraft:snowy_slopes",
"minecraft:frozen_peaks",
"minecraft:jagged_peaks",
"minecraft:stony_peaks"
]