70 lines
2.3 KiB
Java
70 lines
2.3 KiB
Java
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());
|
|
}
|
|
}
|