mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-19 18:31:18 +02:00
59 lines
2.5 KiB
Diff
59 lines
2.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Shane Freeder <theboyetronic@gmail.com>
|
|
Date: Sat, 4 Nov 2023 18:39:18 -0400
|
|
Subject: [PATCH] Add MaterialTagsTest
|
|
|
|
|
|
diff --git a/src/test/java/io/papermc/paper/inventory/item/MaterialTagsTest.java b/src/test/java/io/papermc/paper/inventory/item/MaterialTagsTest.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..3f2734eae2053b4b8fccd7149178699e36ce8b78
|
|
--- /dev/null
|
|
+++ b/src/test/java/io/papermc/paper/inventory/item/MaterialTagsTest.java
|
|
@@ -0,0 +1,46 @@
|
|
+package io.papermc.paper.inventory.item;
|
|
+
|
|
+import com.destroystokyo.paper.MaterialTags;
|
|
+import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
|
+import java.util.List;
|
|
+import java.util.stream.Collectors;
|
|
+import java.util.stream.Stream;
|
|
+import net.minecraft.core.registries.BuiltInRegistries;
|
|
+import net.minecraft.world.item.Item;
|
|
+import net.minecraft.world.item.enchantment.EnchantmentCategory;
|
|
+import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
|
+import org.bukkit.support.AbstractTestingBase;
|
|
+import org.jetbrains.annotations.NotNull;
|
|
+import org.junit.jupiter.api.Assertions;
|
|
+import org.junit.jupiter.params.ParameterizedTest;
|
|
+import org.junit.jupiter.params.provider.MethodSource;
|
|
+
|
|
+public class MaterialTagsTest extends AbstractTestingBase {
|
|
+
|
|
+ private final static EnchantmentCategory[] ENCHANTMENT_CATEGORIES = EnchantmentCategory.values();
|
|
+
|
|
+ @ParameterizedTest
|
|
+ @MethodSource("items")
|
|
+ public void testEnchantables(@NotNull final Item item) {
|
|
+ final List<EnchantmentCategory> enchantableCategories = new ObjectArrayList<>();
|
|
+ for (final EnchantmentCategory enchantmentCategory : ENCHANTMENT_CATEGORIES) {
|
|
+ if (enchantmentCategory.canEnchant(item)) enchantableCategories.add(enchantmentCategory);
|
|
+ }
|
|
+
|
|
+ final boolean taggedAsEnchantable = MaterialTags.ENCHANTABLE.isTagged(CraftMagicNumbers.getMaterial(item));
|
|
+ final boolean requiresTagByInternals = !enchantableCategories.isEmpty();
|
|
+ Assertions.assertEquals(
|
|
+ requiresTagByInternals,
|
|
+ taggedAsEnchantable,
|
|
+ () -> "%s matches enchantment categories [%s] but was tagged by material tags as enchantable: %s".formatted(
|
|
+ item.getDescriptionId(),
|
|
+ enchantableCategories.stream().map(Enum::name).collect(Collectors.joining(", ")),
|
|
+ taggedAsEnchantable
|
|
+ )
|
|
+ );
|
|
+ }
|
|
+
|
|
+ private static Stream<Item> items() {
|
|
+ return BuiltInRegistries.ITEM.stream();
|
|
+ }
|
|
+}
|