/* * © 2026 TiedUp! Remake Contributors, distributed under GPLv3. */ package com.tiedup.remake.rig.render; import static org.junit.jupiter.api.Assertions.assertFalse; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; /** * Tests du dispatch engine RIG — scope limité au code pur qui ne dépend pas * d'une instance {@code EntityType} / {@code Entity} Minecraft (tests pure-logic, * voir {@code build.gradle}). * *

Les cas couverts ici vérouillent les protections défensives (null-safety * du filtre d'entité, propreté du reset de registry entre appels {@code AddLayers}). * Le dispatch complet (instancier un renderer, traiter un event {@code RenderLivingEvent.Pre}) * ne peut pas être testé sans MC runtime — ce sera validé Phase 2.7+ via * runClient smoke test.

*/ class TiedUpRenderEngineTest { @BeforeEach void setUp() { TiedUpRenderEngine.resetForTest(); } @AfterEach void tearDown() { TiedUpRenderEngine.resetForTest(); } @Test void isEligibleForDispatchRejectsNull() { assertFalse(TiedUpRenderEngine.isEligibleForDispatch(null), "null entity must NOT be eligible — NPE guard upstream of instanceof chain"); } @Test void providerMapStartsEmpty() { // hasProviderFor doit dériver l'état courant — sans AddLayers fired, la // map est vide donc tous les EntityType (non testables ici sans MC // runtime) retournent false. On valide au minimum le contrat null-safe. assertFalse(TiedUpRenderEngine.hasProviderFor(null), "null entity type must not crash, must return false"); } @Test void resetForTestClearsState() { TiedUpRenderEngine.resetForTest(); // Après reset, la map est vide — les helpers d'inspection retournent // false. Une invocation supplémentaire de reset doit rester idempotente // (pas de NPE sur structures pré-reset). TiedUpRenderEngine.resetForTest(); assertFalse(TiedUpRenderEngine.hasProviderFor(null), "state reset must be idempotent and leave the engine in a clean slate"); } }