import java.io.*;
public class TestEsercizio1 {

  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 Esercizio1............................");

     System.out.println("");
     System.out.println("Per gestire la coda:");
     System.out.println("  1.  Inserisci elemento in coda");
     System.out.println("  2.  Elimina e ritorna il primo elemento in coda");
     System.out.println("  3.  Ritorna il primo elemento in coda");
     System.out.println("  4.  Controlla se la coda e' vuota");
     System.out.println("  5.  Svuota la coda");
     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.  toStack");
     System.out.println("");
     System.out.println("0.  ESCI");
     System.out.println("");
     System.out.println(".........................................................");

  }



  public static void main(String[] args) {

     int risposta;

     QueueArray q1 = new QueueArray();
     StackArray s1;

     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 coda

                 // 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) {
	   	    q1.enqueue(testo);
		    System.out.println("Elemento inserito");
                 }
		 else
		    System.out.println("Elemento non inserito");

		 break;

              case 2 ://rimozione primo elemento in coda
                 if (! q1.isEmpty()) {
		    testo = (String)q1.dequeue();
		    System.out.println("Elemento eliminato: " + testo);
                 }
		 else
		    System.out.println("coda Vuota!");
		 break;

              case 3 ://ritorna il primo elemento in coda

                 if (! q1.isEmpty()) {
		    testo = (String)q1.front();
		    System.out.println("Primo elemento in coda: " + testo);
                 }
		 else
		    System.out.println("coda Vuota!");
		 break;

              case 4 ://test isEmpty

		 if (q1.isEmpty())
		    System.out.println("La coda e' vuota.");
		 else
		    System.out.println("La coda non e' vuota.");

		 break;

              case 5 ://svuota la coda

                 q1.clear();
                 System.out.println("Coda svuotata.");
		 break;


	      case 6 : // test per toString
		  System.out.println(Esercizio1.toString(q1));
                 break;

	      case 7 : // test per scambia
		  Esercizio1.scambia(q1);
                  System.out.println("eseguito lo scambio dei primi due elementi");
                 break;
	      case 8 : // test per toStack
		  s1 = Esercizio1.toStack(q1);
                  System.out.println("elementi memorizzati nello stack:");
		  while (!s1.isEmpty())
		      System.out.print((s1.pop()).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());}

  }

}


