NRF SDK 0.9

Maintenance

Tester son mod

Vérifiez les décisions, le paquet et le comportement en partie avec des preuves adaptées à chaque niveau.

Tester les décisions sans ouvrir le jeu

Prérequis : le premier mod et sa configuration Gradle. Créez le fichier ci-dessous dans le même projet. Le plugin fournit kotlin.test et prépare les ressources pour les tests Windows.

src/test/kotlin/SignalTests.kt
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import nimby.*

class SignalTests {
    @Test fun unknownBlockStaysClosed() {
        val mod = nimby.mod.createMod()
        val decision = mod.evaluate(
            mapOf("active" to true),
            Observation(block = Occupancy.Unknown, fresh = true, routeKnown = true)
        )
        val indication = assertNotNull(mod.indication(decision)?.of(nimby.mod.firstSignal))
        assertEquals(nimby.mod.Aspect.Closed, indication.aspect)
        assertEquals(nimby.mod.Reason.Unknown, indication.reason)
    }

    @Test fun knownClearBlockOpens() {
        val mod = nimby.mod.createMod()
        val decision = mod.evaluate(
            mapOf("active" to true),
            Observation(block = Occupancy.Clear, fresh = true, routeKnown = true)
        )
        val indication = assertNotNull(mod.indication(decision)?.of(nimby.mod.firstSignal))
        assertEquals(nimby.mod.Aspect.Open, indication.aspect)
        assertEquals(nimby.mod.Reason.Clear, indication.reason)
    }
}
Exécuter les tests
.\gradlew.bat windowsTest

Le premier test vérifie le repli ; le second vérifie le cas nominal. mod.indication(decision)?.of(firstSignal) retrouve les enums du modèle : comparez leurs valeurs typées, jamais le code Decision.aspect à un ordinal local. Les tests vérifient aussi le motif. Pour plusieurs modèles ou des dépendances entre voisins, utilisez evaluateNetwork avec des Signal préparés et vérifiez chaque indication avec son modèle.

Situation à fournir au testRésultat à définir
Occupation inconnue, observation périmée ou itinéraire inconnuUn repli explicite, sans déduire que la voie est libre.
Réglage indisponible, valeur par défaut, bornes numériquesUne décision cohérente avec le contrat du réglage.
Voisin absent, autre modèle, chaîne ou cycleUne résolution bornée et un repli testable.
Signal fermé pour deux motifs différentsLes consignes de conduite attendues pour chaque motif.
Animation juste avant, à et après une limite de phaseL’image attendue pour un temps simulé fourni explicitement.

Vérifier chaque niveau séparément

VérificationCe qu’elle établitCe qui reste à vérifier
windowsTestRésultat des règles sur les entrées du test.Données et comportement dans une vraie partie.
assembleReleaseModProduction des fichiers et du catalogue du mod.Chargement et comportement du paquet.
verifyNativeModChargement, arrêt et rechargement hors jeu.Interactions avec le jeu et son interface.
Essai en partieRésultat sur la sauvegarde, le SDK et le jeu utilisés.Autres cartes, tailles de réseau et scénarios.

Un rapport UP-TO-DATE signifie que Gradle réutilise un résultat dont les entrées sont inchangées. Pour exécuter de nouveau une tâche lors d’une recette précise, utilisez --rerun-tasks et conservez la commande avec le rapport. Ce choix n’est pas nécessaire à chaque modification de texte.

Recette avec exécution explicite
.\gradlew.bat windowsTest verifyNativeMod --rerun-tasks

Rendre un essai en partie reproductible

  • Préparez une copie ou une sauvegarde de test et notez le point de départ. Conservez les versions du jeu, du SDK et des mods.
  • Définissez un résultat observable : indication, consigne appliquée, panneau, objets créés ou résultat de ticket. Fixez aussi le cas de refus attendu.
  • Essayez la pause, la reprise, plusieurs vitesses et un chargement de partie. Vérifiez que les données de l’ancienne session ne déclenchent pas une action.
  • Pour un outil de construction, vérifiez l’aperçu, la confirmation, les résultats partiels, les objets créés et l’annulation autorisée.
  • Terminez l’essai en fermant vos fenêtres et connexions et en retirant les effets temporaires. Notez ce qui a été restauré.