package importation.csv;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import junit.framework.Assert;
import junit.framework.TestCase;
import modele.chauffeur.Pays;
/**
*
* @author Kasandra
*
*/
public class CsvPaysImportateurTest extends TestCase {
public void testImporte() throws Exception {
CsvImportateur<Pays> importateur = new CsvImportateur<Pays>();
String s = "BE;Belgique\nFR;France\n";
InputStream flux = new ByteArrayInputStream(s.getBytes());
Collection<Pays> paysImport�s = importateur.importe(flux, new CSVPaysDecodeur());
Collection<Pays> paysAttendus = Arrays.asList(creePays("BE","Belgique"), creePays("FR","France"));
v�rifieListeIdentique(paysAttendus, paysImport�s);
}
private void v�rifieListeIdentique(Collection<Pays> paysAttendus, Collection<Pays> paysImport�s) {
if (paysAttendus.size() != paysImport�s.size()) {
Assert.fail("les listes de pays ne contiennent pas le m�me nombre d'�l�ments");
}
Comparator<Pays> paysComparator = new Comparator<Pays>() {
@Override
public int compare(Pays pays1, Pays pays2) {
int codePaysComparaison = pays1.getCode().compareTo(pays2.getCode());
if (codePaysComparaison == 0) {
return pays1.getNom().compareTo(pays2.getNom());
} else {
return codePaysComparaison;
}
}
};
List<Pays> paysAttendusTri�s = new ArrayList<Pays>(paysAttendus);
Collections.sort(paysAttendusTri�s, paysComparator);
List<Pays> paysImport�sTri�s = new ArrayList<Pays>(paysImport�s);
Collections.sort(paysImport�sTri�s, paysComparator);
for (int i = 0; i < paysAttendusTri�s.size(); i++) {
if (!paysAttendusTri�s.get(i).getCode().equals(paysImport�sTri�s.get(i).getCode())) {
Assert.fail("le code des pays n'est pas le m�me");
} else {
if (!paysAttendusTri�s.get(i).getNom().equals(paysImport�sTri�s.get(i).getNom())) {
Assert.fail("le nom des pays n'est pas le m�me");
}
}
}
}
private Pays creePays(String code, String nom) {
Pays pays = new Pays();
pays.setCode(code);
pays.setNom(nom);
return pays;
}
}