package es.uniovi.asw.trivial;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import es.uniovi.asw.trivial.main.Extractor;
import es.uniovi.asw.trivial.model.Pregunta;
import es.uniovi.asw.trivial.model.Respuesta;
import es.uniovi.asw.trivial.parser.ParserBuilder;
import es.uniovi.asw.trivial.serializer.JSONSerializer;
public class ExtractorTest {
int numPreguntasGift = 82;
@Test
public void emptyExtractor() {
String args[] = {};
Extractor ext = new Extractor();
assertThat(ext.run(args)).isEqualTo(0);
}
@Test
public void probandoLectura() {
List<Pregunta> prueba = ParserBuilder.build("preguntas.gift", "gift")
.parse();
assertThat(prueba.size()).isEqualTo(numPreguntasGift);
for (int i = 0; i < prueba.size(); i++) {
System.out.println("Pregunta: " + i + "\t"
+ prueba.get(i).getEnunciado());
List<Respuesta> respuestas = prueba.get(i).getRespuestas();
for (int j = 0; j < prueba.get(i).getRespuestas().size(); j++) {
if (respuestas.get(j).isCorrecta()) {
System.out.println("Respuesta correcta: "
+ respuestas.get(j).getRespuesta());
} else
System.out.println("Respuesta incorrecta:"
+ respuestas.get(j).getRespuesta());
}
System.out.println(JSONSerializer.getJSON(prueba));
}
}
@Test
public void estructuraPreguntas() {
List<Pregunta> preguntas = ParserBuilder
.build("preguntas.gift", "gift").parse();
for (int i = 0; i < preguntas.size(); i++) {
assertThat(preguntas.get(0).getEnunciado().length()).isGreaterThan(
5);
Assert.assertNotNull(preguntas.get(i).getRespuestaCorrecta());
int respuestasCorrectas = 0;
for (int j = 0; j < preguntas.get(i).getRespuestas().size(); j++) {
if (preguntas.get(i).getRespuestas().get(j).isCorrecta()) {
respuestasCorrectas++;
}
}
assertThat(respuestasCorrectas).isEqualTo(1);
}
}
@Test
public void respuestaCorrectaXML() {
List<Pregunta> preguntas = ParserBuilder
.build("preguntas.xml", "xml").parse();
for (int i = 0; i < preguntas.size(); i++) {
Assert.assertNotNull(preguntas.get(i).getRespuestaCorrecta());
int cont = 0;
for (int j = 0; j < preguntas.get(i).getRespuestas().size(); j++) {
if (preguntas.get(i).getRespuestas().get(j).isCorrecta()) {
cont++;
}
if(i == 0){
Assert.assertEquals(preguntas.get(i).getRespuestaCorrecta().getRespuesta(), "cuatro");
}
}
assertThat(cont).isEqualTo(1);
}
}
}