package question3;


/**
* Classe-test AuditeurCNAMTest.
*
*
@author  xxxxxxxxxxxxxxxxxx d'après TP1
*
@version oct 2011
*
* Les classes-test sont documentées ici :
* http://junit.sourceforge.net/javadoc/junit/framework/TestCase.html
* et sont basées sur le document © 2002 Robert A. Ballance intitulé
* «JUnit: Unit Testing Framework».
*
* Les objets Test (et TestSuite) sont associés aux classes à tester
* par la simple relation yyyTest (e.g. qu'un Test de la classe Name.java
* se nommera NameTest.java); les deux se retrouvent dans le même paquetage.
* Les "engagements" (anglais : "fixture") forment un ensemble de conditions
* qui sont vraies pour chaque méthode Test à exécuter.  Il peut y avoir
* plus d'une méthode Test dans une classe Test; leur ensemble forme un
* objet TestSuite.
* BlueJ découvrira automatiquement (par introspection) les méthodes
* Test de votre classe Test et générera la TestSuite conséquente.
* Chaque appel d'une méthode Test sera précédé d'un appel de setUp(),
* qui réalise les engagements, et suivi d'un appel à tearDown(), qui les
* détruit.
*/
public class AuditeurCNAMTest extends junit.framework.TestCase
{
   
/**
     * L'objet auditeur1, engagement nécessaire pour les tests.
     */
   
private question3.AuditeurCNAM auditeur1;

   
// Définissez ici les variables d'instance nécessaires à vos engagements;
    // Vous pouvez également les saisir automatiquement du présentoir
    // à l'aide du menu contextuel "Présentoir --> Engagements".
    // Notez cependant que ce dernier ne peut saisir les objets primitifs
    // du présentoir (les objets sans constructeur, comme int, float, etc.).

   
/**
     * Constructeur de la classe-test AuditeurCNAMTest.
     */
   
public AuditeurCNAMTest()
    {
    }

   
/**
     * Met en place les engagements.
     *
     * Méthode appelée avant chaque appel de méthode de test.
     */
   
protected void setUp() // throws java.lang.Exception
   
{
       
auditeur1 = new question3.AuditeurCNAM("Düént-Trep", "Marguerite", "012345");
   
}

   
/**
     * Supprime les engagements.
     *
     * Méthode appelée après chaque appel de méthode de test.
     */
   
protected void tearDown() // throws java.lang.Exception
   
{
       
auditeur1 = null;
   
}

   
/*
     * Il ne vous reste plus qu'à définir une ou plusieurs méthodes de test.
     * Ces méthodes doivent vérifier les résultats attendus à l'aide d'assertions
     * assertTrue(<boolean>).
     * Par convention, leurs noms devraient débuter par "test".
     * Vous pouvez ébaucher le corps grâce au menu contextuel "Enregistrer une méthode de test".
     */

      
/** Un test de la méthode toString().*/
   
public void test_toString(){
       
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("Dupont", "paul", "03-1234");
        assertEquals
("Dupont paul login : dupont_p", auditeur1.toString());
   
}
   
   
   
/**
     * Teste si un nom de moins de 6 lettres est correctement transformé pour le login.
     */
   
public void test_nom_court(){
       
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("paul", "pierre", "12345");
        assertEquals
("paul", auditeur1.nom());
        assertEquals
("pierre", auditeur1.prenom());
        assertEquals
("paul_p", auditeur1.login());
   
}
   
   
/**
     * Teste si un nom de moins de 6 lettres est correctement transformé pour le login (second test).
     */
   
public void test_nom_court_bis(){
         
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("thon", "germon", "12345");
          assertEquals
("Mr thon germon", "thon", auditeur1.nom());
          assertEquals
("Mr thon germon", "germon", auditeur1.prenom());
          assertEquals
("Mr thon germon", "thon_g", auditeur1.login());
   
}
   
   
/**
     * Teste si un nom avec particule est correctement transformé pour le login.
     */
   
public void test_nom_avec_particule(){
         
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("le Thon", "alban", "12345");
          assertEquals
("Mr le Thon albacore ","le Thon", auditeur1.nom());
          assertEquals
("Mr le Thon albacore ", "alban", auditeur1.prenom());
          assertEquals
(" matricule ?", "12345", auditeur1.matricule());    
          assertEquals
(" login ? ", "le_tho_a", auditeur1.login());
   
}
   
  
/**
    * Teste si un nom composé est correctement transformé pour le login.
    */
   
public void test_nom_compose(){
          
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("Ton-Ton", "max", "12345");
           assertEquals
("Mr Ton-Ton max ", "Ton-Ton", auditeur1.nom());
           assertEquals
("Mr Ton-Ton max ", "max", auditeur1.prenom());
           assertEquals
("Mr Ton-Ton max ","ton_to_m", auditeur1.login());
   
}
   
 
/**
   * Teste si un nom de moins de 6 lettres avec particule est correctement transformé pour le login.
   */
 
public void test_nom_court_avec_particule(){

       
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("Te-Te", "max", "12345");
        assertEquals
("Mr Te-Te max ","Te-Te", auditeur1.nom());
        assertEquals
("Mr Te-Te max ","max", auditeur1.prenom());
        assertEquals
("nom court avec particules ? ","te_te_m", auditeur1.login());
 
}
   
 
/**
   * Teste si les accents sont bien remplacés par la lettre non accentuée correspondante.
   */
 
public void test_nom_avec_accent(){
       
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("Chloé", "chloé", "12345");
        assertEquals
("Mme Chloé chloé ", "Chloé", auditeur1.nom());
        assertEquals
("Mme Chloé chloé ","chloé", auditeur1.prenom());
        assertEquals
(" nom avec accent (é devient e) ? ","chloe_c", auditeur1.login());
 
}
   
 
/** Teste si la première lettre d'un prénom, qui est accentuée, devient non accentuée.
   *
   */
 
public void test_prenom_avec_accent(){
      
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("Dupont","Élodie","12345");
       assertEquals
("Mme Dupont Élodie", "Dupont", auditeur1.nom());
       assertEquals
("Mme Dupont Élodie", "Élodie", auditeur1.prenom());
       assertEquals
("prénom avec accent sur la première lettre ? ", "dupont_e", auditeur1.login());     
     
 
}
 
 
/** Teste si des chiffres insérés dans le nom ou le prénom sont bien supprimés
   * lors de la fabrication du login.
   */
 
public void test_nom_prenom_avec_chiffres () {
      
question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("54Du79pont","29Sa487bine","12345");
       assertEquals
("login avec des chiffres dans le nom/prénom ? ", "dupont_s", auditeur1.login());
   
 
}
 
}