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.
{
/**
* 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.
*
* @return void
*/
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.
*
* @return void
*/
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.
*
* @return void
*/
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 $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
$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();
?>