/*******************************************************************************
 * Testovací třída Strom_3aTest testuje: 
 *  = že se stromy umějí nakreslit a smazat 
 *  = základní bezparametrické posuny 
 *
 * @author     Rudolf Pecinovský
 * @version    2.01, duben 2004
 */
public class Strom_3aTest extends junit.framework.TestCase
{
    private Strom_3a strom1;
    private Strom_3a strom2;
    private Strom_3a strom3;
    private Strom_3a strom4;


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

    /***************************************************************************
     * Vytvoří test se zadaným názvem.
     *
     * @param název  Název konstruovaného testu
     */
    public Strom_3aTest( 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()
    {
        strom1 = new Strom_3a();
        strom2 = new Strom_3a( 25, 150);
        strom3 = new Strom_3a(100, 100, 100,  90);
        strom4 = new Strom_3a(200,   0, 100, 300);
    }


    /***************************************************************************
     * Úklid po testu - tato metoda se spustí po vykonání každého testu.
     * Bezparametrický konstruktor pro testovací třídu StromTest
     */
    protected void tearDown()
    {
    }


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

    public void testNakresliSmaž()
    {
        strom1.smaž();
        strom2.smaž();
        strom3.smaž();
        strom4.smaž();
        assertEquals(true, P.souhlas("Stromy smazány?"));
        strom1.nakresli();
        strom2.nakresli();
        strom3.nakresli();
        strom4.nakresli();
        assertEquals(true, P.souhlas("Stromy opět nakresleny?"));
    }

    public void testPosuny()
    {
        P.zpráva("Následuje posun vpravo");
        strom4.posunVpravo();
        strom3.posunVpravo();
        strom2.posunVpravo();
        strom1.posunVpravo();
        assertEquals(true, 
            P.souhlas("Posun vpravo vpořádku?\n\nNásleduje posun vlevo"));
        strom1.posunVlevo();
        strom2.posunVlevo();
        strom3.posunVlevo();
        strom4.posunVlevo();
        assertEquals(true, 
            P.souhlas("Posun vlevo vpořádku?\n\nNásleduje posun vzhůru"));
        strom1.posunVzhůru();
        strom3.posunVzhůru();
        strom4.posunVzhůru();
        strom2.posunVzhůru();
        assertEquals(true, 
            P.souhlas("Posun vzhůru vpořádku?\n\nNásleduje posun dolů"));
        strom2.posunDolů();
        strom4.posunDolů();
        strom3.posunDolů();
        strom1.posunDolů();
        assertEquals(true, 
            P.souhlas("Posun dolů vpořádku?"));
    }
    

}

