/*******************************************************************************
 * Testovací třída Test_04.
 *
 * @author    jméno autora
 * @version   0.00.000,  0.0.2003
 */
public class Test_04 extends junit.framework.TestCase
{
    private Plátno plátno1;
    private Obdélník obdélník1;
    private Elipsa elipsa1;
    private Trojúhelník trojúhel1;
    private Strom_4 strom1;

    private static String text ="";

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří test se zadaným názvem.
     *
     * @param název  Název konstruovaného testu
     */
    public Test_04( String název )
    {
        super( název );
    }



//== PŘÍPRAVA A ÚKLID PŘÍPRAVKU ================================================

    /***************************************************************************
     * Vytvoření přípravku (fixture), tj. sady objektů, s nimiž budou všechny
     * testy pracovat a která se proto vytvoří před spuštěním každého testu.
     */
    protected void setUp()
    {
        plátno1 = Plátno.getPlátno();
        obdélník1 = new Obdélník   (   0,   0, 100, 150 );
        elipsa1   = new Elipsa     ( 150,   0, 150, 100 );
        trojúhel1 = new Trojúhelník( 150, 150, 150, 150 );
        strom1     = new Strom_4   (   0, 150 );
    }


    /***************************************************************************
     * Úklid po testu - tato metoda se spustí po vykonání každého testu.
     */
    protected void tearDown()
    {
        assertTrue( P.souhlas(text + "\n\nV pořádku?") );
        plátno1.setRozměr(300, 300);
    }


//== VLASTNÍ TESTY =============================================================

    public void testZměnaVelikostiPlátna()
    {
        plátno1.setRozměr(100, 200);
        obdélník1.nakresli();
        elipsa1.nakresli();
        trojúhel1.nakresli();
        strom1.nakresli();
        text = "Rozěmr plátna = 100×200.";
    }

    public void testProhození()
    {
        //Aby bylo prohození vidět co nejlépe, vypíšeme nejprve upozornění
        P.zpráva("Bude se prohazovat");

        //Nejprve je třeba některé obrazce přesunout jinam,
        //aby se při přesunech vzájemně neumazávaly.
        //To, že se budou v odkladné pozici překrývat, nevadí.
        obdélník1.setPozice(300,0);
        elipsa1.setPozice(300,0);
        trojúhel1.setPozice(300, 0);

        //Strom_4 je poslední - proto jej již nikdo nepřemaže
        //Nyní přesuneme obrazce do cílových pozic
        strom1.setPozice(150,0);
        obdélník1.setPozice(150, 150);
        elipsa1.setPozice(0, 150);
        trojúhel1.setPozice(0, 0);
        text = "Obrazce prohozeny.";
    }

	public void testPlátno()
	{
		plátno1.setBarvaPozadí(Barva.MODRÁ);
        text = "Plátno má modré pozadí.";
	}

	public void testZastavení()
	{
	    P.zpráva("Start");
	    P.zpráva("Čekám");
        text = "Startovací a čekací zpráva odeslány.";
	}

}

