feat: initialisation complète de la bibliothèque betterMcGuis (Fluent DSL, ItemBuilder, PaginatedGui, TabbedGui, AnimatedGui, Patterns ASCII, Moteur d'événements, Sécurité anti-glitch et documentation)

This commit is contained in:
2026-08-23 18:10:49 +02:00
parent b88eaad155
commit 806d1789a1
63 changed files with 6233 additions and 2 deletions
@@ -0,0 +1,69 @@
package fr.luc.bettermcguis;
import fr.luc.bettermcguis.api.GuiItem;
import fr.luc.bettermcguis.api.GuiType;
import fr.luc.bettermcguis.api.slot.SlotRange;
import fr.luc.bettermcguis.type.PaginatedGui;
import org.bukkit.Material;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.util.concurrent.atomic.AtomicInteger;
import static org.junit.jupiter.api.Assertions.*;
public class PaginatedGuiTest {
@Test
@DisplayName("PaginatedGui doit calculer correctement le nombre total de pages")
void testPaginationMath() {
PaginatedGui gui = new PaginatedGui("Paginated Test", GuiType.CHEST_3_ROWS);
gui.setItemSlots(SlotRange.of(10, 16)); // 7 slots par page
assertEquals(7, gui.getPageSize());
assertEquals(1, gui.getTotalPages()); // 0 items -> 1 page vide
for (int i = 0; i < 20; i++) {
gui.addPageItem(GuiItem.of(Material.GOLD_INGOT));
}
// 20 items / 7 par page -> 3 pages (7 + 7 + 6)
assertEquals(3, gui.getTotalPages());
assertEquals(1, gui.getCurrentPage());
assertTrue(gui.hasNextPage());
assertFalse(gui.hasPreviousPage());
}
@Test
@DisplayName("PaginatedGui doit naviguer entre les pages et déclencher l'événement")
void testPageNavigationAndEvents() {
PaginatedGui gui = new PaginatedGui("Paginated Test", GuiType.CHEST_3_ROWS);
gui.setItemSlots(SlotRange.of(10, 16));
for (int i = 0; i < 20; i++) {
gui.addPageItem(GuiItem.of(Material.EMERALD));
}
AtomicInteger eventFired = new AtomicInteger(0);
gui.onPageChange(evt -> {
eventFired.incrementAndGet();
assertEquals(1, evt.getOldPage());
assertEquals(2, evt.getNewPage());
});
assertTrue(gui.nextPage());
assertEquals(2, gui.getCurrentPage());
assertEquals(1, eventFired.get());
assertTrue(gui.hasPreviousPage());
assertTrue(gui.hasNextPage());
assertTrue(gui.nextPage());
assertEquals(3, gui.getCurrentPage());
assertFalse(gui.hasNextPage()); // Fin du catalogue
// Impossible d'avancer plus loin
assertFalse(gui.nextPage());
assertEquals(3, gui.getCurrentPage());
}
}