PieceSquadroTest.php 5,67 ko
Newer Older
// Inclusion de la classe PieceSquadro
require_once 'PieceSquadro.php';

/**
 * Classe de test pour la classe PieceSquadro.
 * 
 * Cette classe contient différentes méthodes pour tester les fonctionnalités 
 * de la classe PieceSquadro, y compris l'initialisation des pièces, la conversion 
 * JSON, et les inversions de direction.
class PieceSquadroTest
{
    /**
     * Teste l'initialisation d'une pièce vide.
     * 
     * Vérifie que la méthode initVide initialise une pièce correctement avec
     * les valeurs par défaut.
     * 
     * @return void
     */
    public function testInitVide()
    {
        $piece = PieceSquadro::initVide();
        echo "Test Init Vide: ";
        echo "Couleur: " . $piece->getCouleur() . " Direction: " . $piece->getDirection() . "\n";
        echo "Constantes: VIDE = " . PieceSquadro::VIDE . ", NEUTRE = " . PieceSquadro::NEUTRE . "\n\n";
    }

    /**
     * Teste l'initialisation d'une pièce neutre.
     * 
     * Vérifie que la méthode initNeutre retourne une pièce avec une couleur neutre.
     * 
     * @return void
     */
    public function testInitNeutre()
    {
        $piece = PieceSquadro::initNeutre();
        echo "Test Init Neutre: ";
        echo "Couleur: " . $piece->getCouleur() . " Direction: " . $piece->getDirection() . "\n";
        echo "Constantes: NEUTRE = " . PieceSquadro::NEUTRE . "\n\n";
    }

    /**
     * Teste l'initialisation d'une pièce noire orientée au nord.
     * 
     * Vérifie que la méthode initNoirNord retourne une pièce noire correctement orientée.
     * 
     * @return void
     */
    public function testInitNoirNord()
    {
        $piece = PieceSquadro::initNoirNord();
        echo "Test Init Noir Nord: ";
        echo "Couleur: " . $piece->getCouleur() . " Direction: " . $piece->getDirection() . "\n";
        echo "Constantes: NOIR = " . PieceSquadro::NOIR . ", NORD = " . PieceSquadro::NORD . "\n\n";
    }

    /**
     * Teste l'initialisation d'une pièce noire orientée au sud.
     */
    public function testInitNoirSud()
    {
        $piece = PieceSquadro::initNoirSud();
        echo "Test Init Noir Sud: ";
        echo "Couleur: " . $piece->getCouleur() . " Direction: " . $piece->getDirection() . "\n";
        echo "Constantes: NOIR = " . PieceSquadro::NOIR . ", SUD = " . PieceSquadro::SUD . "\n\n";
    }

    /**
     * Teste l'initialisation d'une pièce blanche orientée à l'est.
     */
    public function testInitBlancEst()
    {
        $piece = PieceSquadro::initBlancEst();
        echo "Test Init Blanc Est: ";
        echo "Couleur: " . $piece->getCouleur() . " Direction: " . $piece->getDirection() . "\n";
        echo "Constantes: BLANC = " . PieceSquadro::BLANC . ", EST = " . PieceSquadro::EST . "\n\n";
    }

    /**
     * Teste l'initialisation d'une pièce blanche orientée à l'ouest.
     */
    public function testInitBlancOuest()
    {
        $piece = PieceSquadro::initBlancOuest();
        echo "Test Init Blanc Ouest: ";
        echo "Couleur: " . $piece->getCouleur() . " Direction: " . $piece->getDirection() . "\n";
        echo "Constantes: BLANC = " . PieceSquadro::BLANC . ", OUEST = " . PieceSquadro::OUEST . "\n\n";
    }

    /**
     * Teste la méthode __toString().
     * 
     * Vérifie que la méthode __toString retourne une chaîne de caractères 
     * représentant correctement une pièce.
     * 
     * @return void
     */
    public function testToString()
    {
        $piece = PieceSquadro::initNoirNord();
        echo "Test ToString: ";
        echo (string)$piece . "\n";
        echo "Constantes: NOIR = " . PieceSquadro::NOIR . ", NORD = " . PieceSquadro::NORD . "\n\n";
    }

    /**
     * Teste la méthode inverseDirection().
     * 
     * Vérifie que les directions des pièces peuvent être inversées 
     * correctement (par exemple : Nord -> Sud ou Ouest -> Est).
     * 
     * @return void
     */
    public function testInverseDirection()
    {
        // Vérif retournement pièces blanches
        $piece = PieceSquadro::initBlancOuest();
        $piece->inverseDirection();
        echo "Test InverseDirection (Blanc Ouest -> Est): ";
        echo "Direction: " . $piece->getDirection() . "\n";
        echo "Constantes: EST = " . PieceSquadro::EST . ", OUEST = " . PieceSquadro::OUEST . "\n\n";

        // Vérif retournement pièces noires
        $piece = PieceSquadro::initNoirNord();
        $piece->inverseDirection();
        echo "Test InverseDirection (Noir Nord -> Sud): ";
        echo "Direction: " . $piece->getDirection() . "\n";
        echo "Constantes: NORD = " . PieceSquadro::NORD . ", SUD = " . PieceSquadro::SUD . "\n\n";
     * Teste la réversibilité de la méthode toJson avec la méthode fromJson.
     * 
     * Vérifie que les données JSON produites par toJson peuvent être correctement
     * converties en un objet avec fromJson.
     * 
     * @return void
    public function testJson()
    {
        $piece = PieceSquadro::initNoirNord();
        $json = $piece->toJson();
        $pieceFromJson = PieceSquadro::fromJson($json);

        echo "Test Json: \n";
        echo "Json: $json\n";
        echo "FromJson Couleur: " . $pieceFromJson->getCouleur() . " Direction: " . $pieceFromJson->getDirection() . "\n";
        echo "Constantes: NOIR = " . PieceSquadro::NOIR . ", NORD = " . PieceSquadro::NORD . "\n\n";

// Exécution des tests
$test = new PieceSquadroTest();
$test->testInitVide();
$test->testInitNeutre();
$test->testInitNoirNord();
$test->testInitNoirSud();
$test->testInitBlancEst();
$test->testInitBlancOuest();
$test->testToString();
$test->testInverseDirection();
$test->testJson();

?>