import java.io.*;
import PQ.*;
public class TestPQ {
   private static void ClearScreen(){
     for (int i=0;i<25;i++)
 System.out.println("");
   }

   public static void menu(){
      System.out.println("Test per Code a Priorita'......................");
      System.out.println("");
      System.out.println("1.  numero di elementi in coda");
      System.out.println("2.  controlla se la coda e' vuota");
      System.out.println("3.  elimina tutti gli elementi in coda");
      System.out.println("4.  inserisce un nuovo elemento in coda");
      System.out.println("5.  estrae l'elemento con priorita' massima");
      System.out.println("6.  ritorna l'elemento con priorita' massima");
      System.out.println("7.  stampa gli elementi in coda");
      System.out.println("0.  Esci");
      System.out.println("");
      System.out.println("................................................");
   }

   public static void main(String[] args) {
      int risposta;
      int valore;
      PQ coda =new PQHeap();
      InputStream in=System.in;
      BufferedReader d = new  BufferedReader(new InputStreamReader(in));
      try{
         do {
            ClearScreen();
            menu();
            risposta = Integer.parseInt(d.readLine());
            String testo = "";
	    Integer t;
	    boolean b = true;
            switch (risposta){

               case 1 : //size
		  System.out.println(coda.size()+
                       (coda.size() == 1?" nodo.":" nodi."));
		  break;

               case 2 :// isEmpty
		  System.out.println("La coda "+ 
                       (coda.isEmpty()?" e' vuota.":" non e' vuota"));	
		  break;

               case 3 :// clear
		  coda.clear();
		  System.out.println("Coda svuotata.");
		  break;

               case 4 :// insert
		  try {
   		     System.out.print("Priorita' (intera) dell'elemento: ");
		     t = Integer.valueOf(d.readLine());
   		     System.out.print("Elemento (stringa) da inserire: ");
		     testo = d.readLine();
		  } catch (Exception e1) {
		       System.out.println(e1.toString());
		       break;
		  }
                  coda.insert(t, testo);
		  System.out.println("Inserzione effettuata");
		  break;

	       case 5: // extractMax
		  if (!coda.isEmpty()) {
                     testo = (String)coda.extractMax();
                     System.out.println("Rimozione effettuata:" + testo);
		  }
                  else
		     System.out.println("Coda vuota"); 
		  break;

	       case 6: // front
		   if (!coda.isEmpty()) {
                     testo = (String)coda.maximum();
                     System.out.println("el. con priorita' massima:" + testo);
		  }
                  else
		     System.out.println("Coda vuota"); 
		  break;


	       case 7: // toString
		  System.out.println(coda.toString());
		  break;

	       default:
                  break;
            }	    
            if (risposta!=-2) {	       
               System.out.println("(Premere Invio)");	       
               d.readLine();	    
            }         
         }while (risposta!=0);      
      }catch (Exception ex){          
         ex.printStackTrace();          
         System.out.println(ex.toString());      
      }   
   }
}

