Hola, estuve haciendo este ejercicio que me dieron
2. Implementar la clase DiasLluviosos, con sus respectivas pruebas unitarias, donde se almacene si llovió o no en un día del año y cuente con los siguientes métodos:
- void registrarQueLlovioElDia (int diaDeAño, boolean llovio)
- boolean consultarSiLlovioElDia (int diaDelAño)
- int contarDiasLluviosos ()
- int consultarCuatrimestreMasLluvioso()
- int consultarPrimerDiaConLluvia()
Pero me tira un error cuando quiero hacer una prueba con jUnit para probar el cuatrimestre mas lluvioso, alguien podria darme alguna mano?
aca dejo el codigo del pronostico:
package guia7Arrays;
public class DiasLluviosos {
private boolean[] dias;
public DiasLluviosos() {
dias = new boolean[365];
for (int i = 0 ; i < dias.length ; i++) {
dias[i] = false;
}
}
public void registrarQueLlovioElDia(int diaDeAño, boolean llovio) {
validarDia(diaDeAño);
dias[diaDeAño] = llovio;
}
public boolean consultarSiLlovioElDia(int diaDelAño) {
validarDia(diaDelAño);
return dias[diaDelAño];
}
public int contarDiasLluviosos() {
int diasLluviosos = 0;
for(int i = 0; i < dias.length ; i++) {
if(dias[i] == true) {
diasLluviosos++;
}
}
return diasLluviosos;
}
public int consultarCuatrimestreMasLluvioso() {
int cuatrimestreMasLluvioso = 0;
int cuatrimestres[];
cuatrimestres = new int[3];
cuatrimestres[0] = diasLlovidosEnRango(1 , 121);
cuatrimestres[1] = diasLlovidosEnRango(121 , 243);
cuatrimestres[2] = diasLlovidosEnRango(244 , 365);
if(cuatrimestres[0] < cuatrimestres[1] ) {
cuatrimestreMasLluvioso = 0;
} else {
if(cuatrimestres[0] < cuatrimestres[2] ) {
cuatrimestreMasLluvioso = 1;
}
}
if(cuatrimestres[1] < cuatrimestres [2] ) {
cuatrimestreMasLluvioso = 2;
}
return cuatrimestreMasLluvioso;
}
public int consultarPrimerDiaConLluvia() {
boolean primerDiaLluviosoNoEncontrado = true;
int primerDiaConLluvia = 0;
for(int i = 0 ; i < dias.length && primerDiaLluviosoNoEncontrado ; i++ ) {
if(dias[i] == true) {
primerDiaLluviosoNoEncontrado = false;
primerDiaConLluvia = i;
}
}
return primerDiaConLluvia;
}
private int validarDia(int diaDeAño) {
Error diaIncorrecto = new Error("dia fuera del rango (0 ; 365]");
if(diaDeAño <= 0 || diaDeAño > 365) {
throw diaIncorrecto;
}
return diaDeAño;
}
private int diasLlovidosEnRango( int inicio, int fin ){
int total = 0;
for( int i = inicio; i <= fin; i++ ) {
if ( dias[i] ) {
total++;
}
}
return total;
}
}
y aca el codigo de la prueba que me tira error, es la que se llama consultarCuatrimestreMasLluvioso
package pruebasJUnit;
import guia7Arrays.DiasLluviosos;
import org.junit.Test;
import org.junit.Assert;
public class pruebasDiasLluviosos {
@Test
public void probarSiInicializaConTodosLosDiasSinLlover() {
DiasLluviosos dias = new DiasLluviosos();
int diasConLluvia = dias.contarDiasLluviosos();
Assert.assertEquals(0, diasConLluvia);
}
@Test
public void probarSiRegistraDiasLluviosoYLosCuenta() {
DiasLluviosos dias = new DiasLluviosos();
dias.registrarQueLlovioElDia(1, true);
dias.registrarQueLlovioElDia(2, true);
dias.registrarQueLlovioElDia(3, true);
int diasConLluvia = dias.contarDiasLluviosos();
Assert.assertEquals(3, diasConLluvia);
}
@Test
public void probarConsultarSiLlovioElDia() {
DiasLluviosos dias = new DiasLluviosos();
dias.registrarQueLlovioElDia(3, true);
boolean llovioElDia = dias.consultarSiLlovioElDia(3);
Assert.assertTrue(llovioElDia);
}
@Test
public void probarConsultarPrimerDiaConLluvia() {
DiasLluviosos dias = new DiasLluviosos();
dias.registrarQueLlovioElDia(340, true);
int primerDiaQueLlovio = dias.consultarPrimerDiaConLluvia();
Assert.assertEquals(340, primerDiaQueLlovio);
}
@Test
public void consultarCuatrimestreMasLluvioso() { /*<--------Preguntar porque me tira error en esta prueba*/
DiasLluviosos dias = new DiasLluviosos();
dias.registrarQueLlovioElDia(121, true);
dias.registrarQueLlovioElDia(130, true);
dias.registrarQueLlovioElDia(140, true);
dias.registrarQueLlovioElDia(145, true);
dias.registrarQueLlovioElDia(150, true);
dias.registrarQueLlovioElDia(160, true);
dias.registrarQueLlovioElDia(166, true);
dias.registrarQueLlovioElDia(200, true);
int cuatrimestreMasLluvioso = dias.consultarCuatrimestreMasLluvioso();
Assert.assertEquals(1 , cuatrimestreMasLluvioso);
}
}
tambien les dejo el error que me tira, saludos y gracias de ante mano