import java.awt.Color;
import org.junit.*;
import org.junit.rules.*;
import static org.junit.Assert.*;

/**
 * Classe de test de la classe Cercle.
 * Contrainte C6.
 */
public class CercleTest {

	// Précision pour les comparaisons réelles
	public final static double EPSILON = 0.001;

	// Les points du sujet
	private Point A, B, C, D, E, F;

	// Les cercles du sujet
	private Cercle C1, C2, C3;

	@Before public void setUp() {
		// Construire les points
		A = new Point(0.0, 0.0);	// C1.x
		B = new Point(0.0, 4.0);	// C1.y
		C = new Point(2.0, 3.0);	// C2.x
		D = new Point(4.0, 3.0);	// C2.y
		E = new Point(10.0, 5.0);	// C3.x
		F = new Point(5.0, 5.0);	// C3.y

		// Construire les cercles
		C1 = new Cercle(A, B);	// Test E12
		C2 = new Cercle(C, D, Color.RED); // Test E13
		C3 = Cercle.creerCercle(E, F);	// Test E14
	}

	/** Vérifier si deux points ont mêmes coordonnées.
	  * @param p1 le premier point
	  * @param p2 le deuxième point
	  */
	static void memesCoordonnees(String message, Point p1, Point p2) {
		assertEquals(message + " (x)", p1.getX(), p2.getX(), EPSILON);
		assertEquals(message + " (y)", p1.getY(), p2.getY(), EPSILON);
	}

	@Test public void testerE12() {
		memesCoordonnees("Centre de C1 pour E12",
				new Point(0.0, 2.0), C1.getCentre());
		assertEquals("Rayon de C1 pour E12", 2.0, C1.getRayon(), EPSILON);
		assertEquals("Couleur de C1 pour E12", Color.BLUE, C1.getCouleur());
	}

	@Test public void testerE13() {
		memesCoordonnees("Centre de C2 pour E13",
				new Point(3.0, 3.0), C2.getCentre());
		assertEquals("Rayon de C2 pour E13", 1.0, C2.getRayon(), EPSILON);
		assertEquals("Couleur de C2 pour E13", Color.RED, C2.getCouleur());
	}
	
	@Test public void testerE14() {
		memesCoordonnees("Centre de C3 pour E14",
				E, C3.getCentre());
		assertEquals("Rayon de C3 pour E14", 5, C3.getRayon(), EPSILON);
		assertEquals("Couleur de C3 pour E14", Color.BLUE, C3.getCouleur());
	}

}
