import java.io.*;
public class TestEsercizio2 {

  private static void ClearScreen(){
     for (int i=0;i<25;i++) System.out.println("");
  }

  public static void menu(){
     System.out.println("Test per la classe Esercizio............................");

     System.out.println("");
     System.out.println("Per gestire la prima pila:");
     System.out.println("  1.  Inserisci elemento in pila");
     System.out.println("  2.  Elimina e ritorna il primo elemento in pila");
     System.out.println("  3.  Ritorna il primo elemento in pila");
     System.out.println("  4.  Controlla se la pila e' vuota");
     System.out.println("  5.  Svuota la pila");
     System.out.println("");
     System.out.println("Per testare i metodi della classe:");
     System.out.println("  6. toString");
     System.out.println("  7. scambia");
     System.out.println("  8. toQueue");
     System.out.println("");
     System.out.println("0.  ESCI");
     System.out.println("");
     System.out.println(".........................................................");

  }



  public static void main(String[] args) {

     int risposta;

     StackArray s1 = new StackArray();
     QueueArray q1 = new QueueArray();

     InputStream in=System.in;
     BufferedReader d = new  BufferedReader(new InputStreamReader(in));
     BufferedReader e = new BufferedReader(new InputStreamReader(in));

     try{
        do {
           ClearScreen();
           menu();
           risposta = Integer.parseInt(d.readLine());
           String testo = "";
	   boolean b = true;

           switch (risposta){

              case 1 ://inserisci elemento in pila

                 // input dei dati
                 try {
                     do {
                        System.out.print("testo da inserire = ");
                        testo = e.readLine();
                     } while (testo == null || testo.equals("")); 
                 } catch(Exception ex) { 
                      System.out.println("Eccezione in lettura: ");
                      b = false;
                 }

		 if (b) {
	   	    s1.push(testo);
		    System.out.println("Elemento inserito");
                 }
		 else
		    System.out.println("Elemento non inserito");

		 break;

              case 2 ://rimozione primo elemento in pila
                 if (! s1.isEmpty()) {
		    testo = (String)s1.pop();
		    System.out.println("Elemento eliminato: " + testo);
                 }
		 else
		    System.out.println("pila Vuota!");
		 break;

              case 3 ://ritorna il primo elemento in pila

                 if (! s1.isEmpty()) {
		    testo = (String)s1.top();
		    System.out.println("Primo elemento in pila: " + testo);
                 }
		 else
		    System.out.println("pila Vuota!");
		 break;

              case 4 ://test isEmpty

		 if (s1.isEmpty())
		    System.out.println("La pila e' vuota.");
		 else
		    System.out.println("La pila non e' vuota.");

		 break;

              case 5 ://svuota la pila

                 s1.clear();
                 System.out.println("pila svuotata.");
		 break;

	      case 6 : // test per toString
		  System.out.println(Esercizio2.toString(s1));
                 break;

	      case 7 : // test per scambia
		  Esercizio2.scambia(s1);
                  System.out.println("eseguito lo scambio dei primi due elementi");
                 break;
	      case 8 : // test per toQueue
		  q1 = Esercizio2.toQueue(s1);
                  System.out.println("elementi memorizzati nella coda:");
		  while (!q1.isEmpty())
		      System.out.print((q1.dequeue()).toString() + " ");
		  System.out.print("\n");
                 break;

              default:
                 break;
           }

           System.out.println("(Premere Invio)");
           d.readLine();
           } while (risposta!=0);

     } catch (Exception ex){System.out.println(ex.toString());}

  }

}


