ArrayPieceSquadroTest.php 4,24 ko
Newer Older
<?php

// Inclusion de la classe ArrayPieceSquadro et de ses dépendances
require_once 'ArrayPieceSquadro.php';
require_once 'PieceSquadro.php';

/**
 * Classe de test pour ArrayPieceSquadro.
 * 
 * Cette classe contient des méthodes permettant de tester les fonctionnalités
 * de ArrayPieceSquadro, notamment l'ajout, la suppression, l'accès par tableau,
 * la conversion en JSON et la manipulation générale.
 */
class ArrayPieceSquadroTest {
    /**
     * Teste l'ajout de pièces à la collection.
     * 
     * Vérifie que les pièces ajoutées sont présentes dans la collection.
     * 
     * @return void
     */
    public function testAdd() {
        $collection = new ArrayPieceSquadro();
        $piece1 = PieceSquadro::initNoirNord();
        $piece2 = PieceSquadro::initBlancEst();

        $collection->add($piece1);
        $collection->add($piece2);

        echo "Test Add:\n";
        echo "Nombre de pièces: " . count($collection) . "\n";
        echo "Pièces: " . $collection . "\n\n";
    }

    /**
     * Teste la suppression d'une pièce par index.
     * 
     * Vérifie que la pièce est correctement supprimée de la collection.
     * 
     * @return void
     */
    public function testRemove() {
        $collection = new ArrayPieceSquadro();
        $piece1 = PieceSquadro::initNoirNord();
        $piece2 = PieceSquadro::initBlancEst();

        $collection->add($piece1);
        $collection->add($piece2);
        $collection->remove(0);

        echo "Test Remove:\n";
        echo "Nombre de pièces après suppression: " . count($collection) . "\n";
        echo "Pièces restantes: " . $collection . "\n\n";
    }

    /**
     * Teste l'accès par tableau (ArrayAccess).
     * 
     * Vérifie que l'accès et la modification des pièces par index fonctionnent.
     * 
     * @return void
     */
    public function testArrayAccess() {
        $collection = new ArrayPieceSquadro();
        $piece1 = PieceSquadro::initNoirNord();
        $piece2 = PieceSquadro::initBlancEst();

        $collection[] = $piece1;
        $collection[] = $piece2;

        echo "Test ArrayAccess:\n";
        echo "Pièce à l'index 0: " . $collection[0] . "\n";
        echo "Pièce à l'index 1: " . $collection[1] . "\n";

        $collection[0] = PieceSquadro::initBlancOuest();
        echo "Modification de l'index 0: " . $collection[0] . "\n\n";
    }

    /**
     * Teste la conversion de la collection en chaîne de caractères.
     * 
     * Vérifie que __toString retourne une représentation correcte.
     * 
     * @return void
     */
    public function testToString() {
        $collection = new ArrayPieceSquadro();
        $piece1 = PieceSquadro::initNoirNord();
        $piece2 = PieceSquadro::initBlancEst();

        $collection->add($piece1);
        $collection->add($piece2);

        echo "Test ToString:\n";
        echo $collection . "\n";
    }

    /**
     * Teste la conversion en JSON et la reconstruction depuis JSON.
     * 
     * Vérifie que toJson et fromJson fonctionnent correctement.
     * 
     * @return void
     */
    public function testJsonConversion() {
        $collection = new ArrayPieceSquadro();
        $piece1 = PieceSquadro::initNoirNord();
        $piece2 = PieceSquadro::initBlancEst();

        $collection->add($piece1);
        $collection->add($piece2);

        $json = $collection->toJson();
        $restoredCollection = ArrayPieceSquadro::fromJson($json);

        echo "Test JsonConversion:\n";
        echo "JSON: $json\n";
        echo "Collection restaurée:\n" . $restoredCollection . "\n\n";
    }

    /**
     * Teste l'implémentation de Countable.
     * 
     * Vérifie que count() retourne le bon nombre de pièces.
     * 
     * @return void
     */
    public function testCountable() {
        $collection = new ArrayPieceSquadro();
        $piece1 = PieceSquadro::initNoirNord();
        $piece2 = PieceSquadro::initBlancEst();

        $collection->add($piece1);
        $collection->add($piece2);

        echo "Test Countable:\n";
        echo "Nombre de pièces: " . count($collection) . "\n\n";
    }
}

// Exécution des tests
$test = new ArrayPieceSquadroTest();
$test->testAdd();
$test->testRemove();
$test->testArrayAccess();
$test->testToString();
$test->testJsonConversion();
$test->testCountable();
?>