package pruebas;
import java.util.GregorianCalendar;
import java.util.Vector;
import java.sql.Date;
import java.sql.SQLException;
import casarural.GestorOfertas;
import casarural.Oferta;
import junit.framework.TestCase;
/**
* @author kdreamer
*/
public class TestGestorOfertas extends TestCase {
/**
* @uml.property name="gestorOfertas"
* @uml.associationEnd
*/
private GestorOfertas gestorOfertas;
public TestGestorOfertas(String nombre) {
super(nombre);
}
public void setUp() {
try {
this.gestorOfertas = GestorOfertas.getInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void tearDown() {
this.gestorOfertas = null;
}
/**
* En esta prueba se concatenan 2 ofertas
*/
public void test_Concatenar_2_Ofertas(){
//Entrada
Vector entrada = new Vector();
Oferta o1 = new Oferta();
o1.setNumCasa(1);
o1.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o1.setDiaFin(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o1.setPrecio(300);
Oferta o2 = new Oferta();
o2.setNumCasa(1);
o2.setDiaIni(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o2.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o2.setPrecio(200);
entrada.add(o1);
entrada.add(o2);
//Resultado Esperado
Vector esperado = (Vector)entrada.clone();
Oferta o3 = new Oferta();
o3.setNumCasa(1);
o3.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o3.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o3.setPrecio(500);
esperado.add(o3);
//Ejecutar test
Vector obtenido = (Vector)gestorOfertas.concatenarOfertas(entrada);
assertEquals("Error en la concatenacion!", esperado, obtenido);
}
/**
* En esta prueba se concatenan 3 ofertas
*/
public void test_Concatenar_3_Ofertas(){
//Entrada
Vector entrada = new Vector();
Oferta o1 = new Oferta();
o1.setNumCasa(1);
o1.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o1.setDiaFin(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o1.setPrecio(300);
Oferta o2 = new Oferta();
o2.setNumCasa(1);
o2.setDiaIni(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o2.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o2.setPrecio(200);
Oferta o3 = new Oferta();
o3.setNumCasa(1);
o3.setDiaIni(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o3.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o3.setPrecio(50);
entrada.add(o1);
entrada.add(o2);
entrada.add(o3);
//Vector Esperado
Vector esperado = (Vector)entrada.clone();
Oferta o4 = new Oferta();
o4.setNumCasa(1);
o4.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o4.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o4.setPrecio(500);
esperado.add(o4);
Oferta o5 = new Oferta();
o5.setNumCasa(1);
o5.setDiaIni(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o5.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o5.setPrecio(250);
esperado.add(o5);
Oferta o6 = new Oferta();
o6.setNumCasa(1);
o6.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o6.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o6.setPrecio(550);
esperado.add(o6);
//Ejecutar test
Vector obtenido = (Vector)gestorOfertas.concatenarOfertas(entrada);
assertEquals("Error en la concatenacion!", esperado, obtenido);
}
/**
* En esta prueba NO se concatenan 2 ofertas porque las fechas estan solapadas
*/
public void test_No_Concatenar_2_Ofertas_Fecha(){
//Entrada
Vector entrada = new Vector();
Oferta o1 = new Oferta();
o1.setNumCasa(1);
o1.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o1.setDiaFin(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o1.setPrecio(300);
Oferta o2 = new Oferta();
o2.setNumCasa(1);
o2.setDiaIni(new Date((new GregorianCalendar(2007, 2, 2)).getTime().getTime()));
o2.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o2.setPrecio(200);
entrada.add(o1);
entrada.add(o2);
//Vector Esperado
Vector esperado = (Vector)entrada.clone();
//Ejecutar test
Vector obtenido = (Vector)gestorOfertas.concatenarOfertas(entrada);
assertEquals("Error en la concatenacion!", esperado, obtenido);
}
/**
* En esta prueba NO se concatenan 2 ofertas porque pertenecen a diferentes casas
*/
public void test_No_Concatenar_2_Ofertas_NumCasa(){
//Entrada
Vector entrada = new Vector();
Oferta o1 = new Oferta();
o1.setNumCasa(1);
o1.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o1.setDiaFin(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o1.setPrecio(300);
Oferta o2 = new Oferta();
o2.setNumCasa(2);
o2.setDiaIni(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o2.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o2.setPrecio(200);
entrada.add(o1);
entrada.add(o2);
//Resultado Esperado
Vector esperado = (Vector)entrada.clone();
//Ejecutar test
Vector obtenido = (Vector)gestorOfertas.concatenarOfertas(entrada);
assertEquals("Error en la concatenacion!", esperado, obtenido);
}
/**
* En esta prueba se prueba el comportamiento de la concatenacion de una sola oferta
*/
public void test_ConcatenarOfertas_1_Oferta(){
//Entrada
Vector entrada = new Vector();
Oferta o1 = new Oferta();
o1.setNumCasa(1);
o1.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o1.setDiaFin(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o1.setPrecio(300);
entrada.add(o1);
//Vector Esperado
Vector esperado = (Vector)entrada.clone();
//Ejecutar test
Vector obtenido = (Vector)gestorOfertas.concatenarOfertas(entrada);
assertEquals("Error en la concatenacion!", esperado, obtenido);
}
/**
* En esta prueba se comprueba la ordenacion de ofertas por duracion descendente en dias de las mismas
*/
public void test_QuickSort_Duracion_Oferta(){
//Entrada
Vector entrada = new Vector();
//2 noches
Oferta o1 = new Oferta();
o1.setNumCasa(1);
o1.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o1.setDiaFin(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o1.setPrecio(300);
//4 noches
Oferta o2 = new Oferta();
o2.setNumCasa(1);
o2.setDiaIni(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o2.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o2.setPrecio(200);
//1 noche
Oferta o3 = new Oferta();
o3.setNumCasa(1);
o3.setDiaIni(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o3.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o3.setPrecio(50);
//6 noches
Oferta o4 = new Oferta();
o4.setNumCasa(1);
o4.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o4.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o4.setPrecio(500);
//5 noches
Oferta o5 = new Oferta();
o5.setNumCasa(1);
o5.setDiaIni(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o5.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o5.setPrecio(250);
//7 noches
Oferta o6 = new Oferta();
o6.setNumCasa(1);
o6.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o6.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o6.setPrecio(550);
entrada.add(o1);
entrada.add(o2);
entrada.add(o3);
entrada.add(o4);
entrada.add(o5);
entrada.add(o6);
//Esperado
Vector esperado = new Vector();
esperado.add(o6);
esperado.add(o4);
esperado.add(o5);
esperado.add(o2);
esperado.add(o1);
esperado.add(o3);
//Ejecutar test
Vector obtenido = (Vector)gestorOfertas.quickSort_Dias(0, entrada.size() -1, entrada);
assertEquals("Error en el orden!", esperado, obtenido);
}
/**
* En esta prueba se comprueba la ordenacion de ofertas por precio ascendente de las mismas
*/
public void test_QuickSort_Precio_Oferta(){
//Entrada
Vector entrada = new Vector();
//200€
Oferta o1 = new Oferta();
o1.setNumCasa(1);
o1.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o1.setDiaFin(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o1.setPrecio(200);
//400€
Oferta o2 = new Oferta();
o2.setNumCasa(1);
o2.setDiaIni(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o2.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o2.setPrecio(400);
//100€
Oferta o3 = new Oferta();
o3.setNumCasa(1);
o3.setDiaIni(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o3.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o3.setPrecio(100);
//600€
Oferta o4 = new Oferta();
o4.setNumCasa(1);
o4.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o4.setDiaFin(new Date((new GregorianCalendar(2007, 2, 7)).getTime().getTime()));
o4.setPrecio(600);
//500€ noches
Oferta o5 = new Oferta();
o5.setNumCasa(1);
o5.setDiaIni(new Date((new GregorianCalendar(2007, 2, 3)).getTime().getTime()));
o5.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o5.setPrecio(500);
//700€
Oferta o6 = new Oferta();
o6.setNumCasa(1);
o6.setDiaIni(new Date((new GregorianCalendar(2007, 2, 1)).getTime().getTime()));
o6.setDiaFin(new Date((new GregorianCalendar(2007, 2, 8)).getTime().getTime()));
o6.setPrecio(700);
entrada.add(o1);
entrada.add(o2);
entrada.add(o3);
entrada.add(o4);
entrada.add(o5);
entrada.add(o6);
//Esperado
Vector esperado = new Vector();
esperado.add(o3);
esperado.add(o1);
esperado.add(o2);
esperado.add(o5);
esperado.add(o4);
esperado.add(o6);
//Ejecutar test
Vector obtenido = (Vector)gestorOfertas.quickSort_Precio(0, entrada.size() - 1, entrada);
assertEquals("Error en el orden!", esperado, obtenido);
}
/**
* En esta prueba se comprueba la integracion entre los metodos dentro del metodo buscar ofertas
* de manera que se consultan las ofertas de casas no reservadas entre el 01-02-2005 y el 01-02-2006
* y con un numero de habitaciones de 5 ordenadas por precio
*/
public void test_Buscar_Ofertas_Por_Precio(){
// Entrada
Vector esperado = new Vector();
Oferta of;
// Resultado Esperado
of = new Oferta();
of.setPrecio(45);
of.setDiaFin(fecha(2006,4,16));
of.setDiaIni(fecha(2006,4,10));
of.setNumCasa(7);
of.setNumOferta("107");
esperado.add(of);
// Ejecutar test
Vector obtenido = (Vector) gestorOfertas.buscarOfertas(fecha(2005,5,15), fecha(2006,4,16),0, 0, 5, 0, true);
assertEquals("Error en la busqueda de ofertas por precio", esperado, obtenido);
}
/**
* En esta prueba se comprueba la integracion entre los metodos dentro del metodo buscar ofertas
* de manera que se consultan las ofertas de casas no reservadas entre el 01-02-2005 y el 01-02-2006
* y con un numero de habitaciones de 5 ordenadas por duracion
*/
public void test_Buscar_Ofertas_Por_Duracion(){
//Entrada
Vector esperado = new Vector();
Oferta of;
//Resultado Esperado
of = new Oferta();
of.setPrecio(45);
of.setDiaFin(fecha(2006,4,16));
of.setDiaIni(fecha(2006,4,10));
of.setNumCasa(7);
of.setNumOferta("107");
esperado.add(of);
// Ejecutar test
//Vector obtenido = (Vector) gestorOfertas.buscarOfertas( fecha(2005,5,15), fecha(2006,4,16),0, -1,5, -1, false);
Vector obtenido = (Vector) gestorOfertas.buscarOfertas(fecha(2005,5,15), fecha(2006,4,16), 0, 0, 5, 0, false);
assertEquals("Error en la busqueda de ofertas por duracion", esperado, obtenido);
}
private java.sql.Date fecha(int year,int month,int day){
return new java.sql.Date((new GregorianCalendar(year, month-1, day)).getTime().getTime());
}
}