

// Ce programme teste la classe Achat

import java.io.* ;

class D5Q3
{
   public static void main (String[] args) throws IOException
   { 
    // DÉCLARATIONS DES VARIABLES ET DICTIONNAIRE DE DONNÉES 
       Client larry, grace;
       Item livre1, livre2, dvd1, dvd2, jeu;
       Achat achat0, achat1, achat2, achat3, achat4;
       boolean résultat;       

    // AFFICHAGE DE L'INFO D'IDENTIFICATION
       System.out.println("Question 3: Test de la classe Achat");
       System.out.println();

    // MODULE DE L’ALGORITHME
       // Crée quelques utilisateurs et items
       larry  = new Client("Larry O'Brien", "larry@obrien.ca", "Noël");
       grace  = new Client("Grace Hopper", "grace@coldmail.org", "Informatique");
       livre1 = new Item(Item.LIVRE, "Da Vinci Code", 12, 3);
       livre2 = new Item(Item.LIVRE, "Garfield", 5, 2);
       dvd1   = new Item(Item.DVD, "Harry Potter III", 15, 5);
       dvd2   = new Item(Item.DVD, "Schindler's List", 20, 1);
       jeu    = new Item(Item.JEU, "HALO 2", 35, 2);

       // Teste un achat dont le coût total est plus petit que le montant crédité
       Item[] items0 = {livre2};
       achat0 = new Achat( larry, 1, items0 );
       
       // Teste l'affichage et le montant crédité
       System.out.print(achat0);
       System.out.println("Montant encore crédité pour " + achat0.getNomClient() 
                           + " : " + larry.getMontantCrédité() + "$");
       System.out.println( "Il reste " + livre2.getCopiesDispo() 
                           + " copies de " + livre2.getTitre() );
       System.out.println();
       
       // Teste un achat
       Item[] items1 = {livre1, livre2, jeu};
       achat1 = new Achat( larry, 1, items1 );

       System.out.println(achat1);
       System.out.println( "Il reste " + livre2.getCopiesDispo() 
                           + " copies de " + livre2.getTitre() );       
       // Teste quelques accesseurs
       System.out.println("Facture #" + achat1.getNumFacture()
                          + ", coût: " + achat1.getCoûtTotal()
                          + "$, acheté au jour: " + achat1.getDateAchat() );
       System.out.println("Montant encore crédité pour " + achat1.getNomClient() 
                           + " : " + larry.getMontantCrédité() + "$");
       System.out.println();
       
       // Teste d'autres achats et itemIci
       Item[] items2 = {dvd1, dvd2, jeu};
       achat2 = new Achat( grace, 2, items2 );
       System.out.println(achat2);
       
       Item[] items3 = {dvd1, livre2}; // Note: il n'y a plus de Garfield disponible ici...
       achat3 = new Achat( larry, 4, items3 );
       System.out.println(achat3);
       
       System.out.println( dvd1.getTitre() + " acheté dans achat0? " + achat0.itemIci(dvd1) );
       System.out.println( dvd1.getTitre() + " acheté dans achat1? " + achat1.itemIci(dvd1) );
       System.out.println( dvd1.getTitre() + " acheté dans achat2? " + achat2.itemIci(dvd1) );
       System.out.println( dvd1.getTitre() + " acheté dans achat3? " + achat3.itemIci(dvd1) );
       System.out.println();

       Item[] items4 = {jeu};
       achat4 = new Achat( larry, 8, items4 );
       System.out.println(achat4);
       System.out.println("Montant crédité pour " + larry.getNom() + ": "
                           + larry.getMontantCrédité() );
   }
}
