
import org.junit.jupiter.api.Test;


import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;

import static org.junit.jupiter.api.Assertions.*;

class CalculatriceTest {

    private Calculatrice calculatrice;

    // Initialisation avant chaque test
    @BeforeEach
    void setUp() {
        calculatrice = new Calculatrice();
        System.out.println("Initialisation de la calculatrice.");
    }

    // Nettoyage après chaque test
    @AfterEach
    void tearDown() {
        calculatrice = null;
        System.out.println("Nettoyage terminé.");
    }

    // Test pour l'addition
    @Test
    void testAddition() {
        int resultat = calculatrice.addition(10, 5);
        assertEquals(15, resultat, "L'addition de 10 et 5 doit donner 15");
    }

    // Test pour la soustraction
    @Test
    void testSoustraction() {
        int resultat = calculatrice.soustraction(10, 5);
        assertEquals(5, resultat, "La soustraction de 10 et 5 doit donner 5");
    }

    // Test pour la multiplication
    @Test
    void testMultiplication() {
        int resultat = calculatrice.multiplication(10, 5);
        assertEquals(50, resultat, "La multiplication de 10 et 5 doit donner 50");
    }

    // Test pour la division
    @Test
    void testDivision() {
        int resultat = calculatrice.division(10, 2);
        assertEquals(5, resultat, "La division de 10 par 2 doit donner 5");
    }

    // Test pour la division par zéro (gestion des exceptions)
    @Test
    void testDivisionParZero() {
        ArithmeticException exception = assertThrows(ArithmeticException.class, () -> {
            calculatrice.division(10, 0);
        });
        assertEquals("Division par zéro interdite !", exception.getMessage(), "Le message d'exception doit être correct");
    }

}
