Ejemplo n.º 1
0
void test_captura_estudiante()
{
	Driver campus;
	campus.crearCampus(10,10);

	Dicc<Agente,Posicion> agentes;
	Agente a = 1;
	Agente a2 = 2;
	Agente a3 = 3;

	Posicion p;
	p.x = 1;
	p.y = 1;

	Posicion p2;
	p2.x = 2;
	p2.y = 2;

	Posicion p3;
	p3.x = 3;
	p3.y = 1;

	agentes.Definir(a,p);
	agentes.Definir(a2,p2);
	agentes.Definir(a3,p3);

	campus.comenzarRastrillaje(agentes);

	Posicion pe;
	pe.x = 2;
	pe.y = 1;

	Nombre e = "pepe";
	campus.ingresarEstudiante(e,pe);
	ASSERT(campus.cantSanciones(a)==1);
	ASSERT(campus.cantSanciones(a2)==1);
	ASSERT(campus.cantSanciones(a3)==1);

	ASSERT(campus.conMismasSanciones(a).Cardinal() == 3 );
	ASSERT(campus.conMismasSanciones(a2).Cardinal() == 3 );
	ASSERT(campus.conMismasSanciones(a3).Cardinal() == 3 );
	Nat c = campus.conKSanciones(1).Cardinal();
	ASSERT(c == 3);

	Nat c2 = campus.conKSanciones(0).Cardinal();
	ASSERT(c2 == 0 );


}
Ejemplo n.º 2
0
void test_rastrillaje_mover_hacia_hippie() {
	Driver campus;
	campus.crearCampus(10,10);

	Dicc<Agente,aed2::Posicion> agentes;
	Agente a = 1;

	aed2::Posicion p;
	p.x = 1;
	p.y = 1;

	agentes.Definir(a,p);

	campus.comenzarRastrillaje(agentes);

	aed2::Posicion ph;
	ph.x = 5;
	ph.y = 1;

	Nombre h = "hippie";
	campus.ingresarHippie(h,ph);

	campus.moverAgente(a);

	aed2::Posicion p4 = campus.posAgente(a);

	ASSERT(p4.x == 2 && p4.y == 1);

}
Ejemplo n.º 3
0
void test_rastrillaje_Mover_hacia_hippie() {
	
	Campus camp(10,10);

	Dicc<Agente,Posicion> agentes;
	Agente a = 1;

	Posicion p;
	p.x = 1;
	p.y = 1;

	agentes.Definir(a,p);

	Rastrillaje rast(camp,agentes);

	Posicion ph;
	ph.x = 5;
	ph.y = 1;

	Nombre h = "hippie";
	rast.IngresarHippie(ph,h);

	rast.MoverAgente(a);

	Posicion p4 = rast.PosAgente(a);

	ASSERT(p4.x == 2 && p4.y == 1);

}
Ejemplo n.º 4
0
void test_captura_hippie_entre_agentes()
{
	Driver campus;
	campus.crearCampus(10,10);

	Dicc<Agente,aed2::Posicion> agentes;
	Agente a = 1;
	Agente a2 = 2;
	Agente a3 = 3;

	aed2::Posicion p;
	p.x = 1;
	p.y = 1;

	aed2::Posicion p2;
	p2.x = 2;
	p2.y = 2;

	aed2::Posicion p3;
	p3.x = 3;
	p3.y = 1;

	agentes.Definir(a,p);
	agentes.Definir(a2,p2);
	agentes.Definir(a3,p3);

	campus.comenzarRastrillaje(agentes);

	aed2::Posicion ph;
	ph.x = 2;
	ph.y = 1;

	Nombre h = "hippie";
	campus.ingresarHippie(h,ph);

	ASSERT(campus.cantHippiesAtrapados(a) == 1);
	ASSERT(campus.cantHippiesAtrapados(a2) == 1);
	ASSERT(campus.cantHippiesAtrapados(a3) == 1);

	ASSERT(campus.masVigilante() == a || campus.masVigilante() == a2 || campus.masVigilante() == a3);

}
Ejemplo n.º 5
0
void test_captura_hippie_entre_agentes()
{
	Campus camp(10,10);

	Dicc<Agente,Posicion> agentes;
	Agente a = 1;
	Agente a2 = 2;
	Agente a3 = 3;

	Posicion p;
	p.x = 1;
	p.y = 1;

	Posicion p2;
	p2.x = 2;
	p2.y = 2;

	Posicion p3;
	p3.x = 3;
	p3.y = 1;

	agentes.Definir(a,p);
	agentes.Definir(a2,p2);
	agentes.Definir(a3,p3);

	Rastrillaje rast(camp,agentes);

	Posicion ph;
	ph.x = 2;
	ph.y = 1;

	Nombre h = "hippie";
	rast.IngresarHippie(ph,h);

	ASSERT(rast.CantHippiesAtrapados(a) == 1);
	ASSERT(rast.CantHippiesAtrapados(a2) == 1);
	ASSERT(rast.CantHippiesAtrapados(a3) == 1);

	ASSERT(rast.MasVigilante() == a || rast.MasVigilante() == a2 || rast.MasVigilante() == a3);

}
Ejemplo n.º 6
0
/**
 * Ejemplo de caso de test, con llamadas a las rutinas de aserción 
 * definidas en mini_test.h
 */
void test_ciudad_simple()
{
    Conj<Estacion> estaciones;
    estaciones.Agregar("Belgrano");
    estaciones.Agregar("Retiro");
    estaciones.Agregar("Martinez");

    Driver caba(estaciones);

    caba.AgregarSenda("Belgrano", "Retiro", "(trenDePasajeros | trenDeCarga) & !trenDeLaAlegria");
    caba.AgregarSenda("Martinez", "Retiro", "trenDeLaAlegria");
    caba.AgregarSenda("Martinez", "Belgrano", "trenDePasajeros");

    Conj<Caracteristica> r1, r2, r3;
    r1.Agregar("trenDePasajeros");
    r2.Agregar("trenDeCarga");
    r3.Agregar("trenDeLaAlegria");

    caba.Entrar(r1,"Belgrano"); // RUR 0
    caba.Entrar(r2,"Retiro");   // RUR 1
    caba.Entrar(r3,"Martinez"); // RUR 2

    ASSERT_EQ(caba.CantidadEstaciones(), 3);
    ASSERT_EQ(caba.CantidadRobotsActivos(), 3);
    ASSERT_EQ(caba.CantidadDeSendasParaEstacion("Belgrano"), 2);

    caba.Mover(0,"Retiro");    // RUR 0: 0 infracciones
    caba.Mover(0,"Martinez");  // RUR 0: 1 infracciones

    caba.Mover(1,"Belgrano");  // RUR 1: 0 infracciones
    caba.Mover(1,"Martinez");  // RUR 1: 1 infracciones

    caba.Mover(2,"Belgrano");  // RUR 2: 1 infracciones
    caba.Mover(2,"Retiro");    // RUR 2: 2 infracciones

    Dicc<RUR,Nat> infraccionesRobots;

    // Chequeo infracciones iterando los robots
    for (Nat i = 0;  i< caba.CantidadRobotsActivos(); ++i)
        infraccionesRobots.Definir(caba.IesimoRobotActivo(i),caba.CantInfraccionesIesimoRobotActivo(i));

    ASSERT_EQ(infraccionesRobots.Significado(0), 1);
    ASSERT_EQ(infraccionesRobots.Significado(1), 1);
    ASSERT_EQ(infraccionesRobots.Significado(2), 2);

    ASSERT_EQ(caba.ElMasInfractor(),2);

    // Vuela un robot
    caba.Inspeccion("Retiro");
    ASSERT_EQ(caba.CantidadRobotsActivos(),2);

}
Ejemplo n.º 7
0
void Inicializacion()
{
	Nat filas = 3;
	Nat columnas = 3;
	Campus* campus = new Campus(filas, columnas);
	Dicc<Agente, Posicion> agentes;
	agentes.Definir(1,Posicion(0,0));
	agentes.Definir(2,Posicion(2,2));

	CampusSeguro* c = new CampusSeguro(campus,agentes);

	delete c;
	delete campus;
}
Ejemplo n.º 8
0
void IngresarHippies(){
	Nat filas = 3;
	Nat columnas = 3;
	Campus* campus = new Campus(filas, columnas);
	Dicc<Agente, Posicion> agentes;
	agentes.Definir(1,Posicion(0,0));
	agentes.Definir(2,Posicion(2,2));

	CampusSeguro* c = new CampusSeguro(campus,agentes);
	c->IngresaHippie("luis", Posicion(2,0));
	c->IngresaHippie("julian", Posicion(1,0));

	delete c;
	delete campus;
}
Ejemplo n.º 9
0
void test_comenzar_rastrillaje_simple() {
	Campus camp(10,10);
	Dicc<Agente,Posicion> agentes;
	
	Agente a = 1;

	Posicion p;
	p.x = 1;
	p.y = 1;

	agentes.Definir(a,p);

	Rastrillaje rast(camp,agentes);
	ASSERT(rast.cantAgentes() == 1);
}
Ejemplo n.º 10
0
void test_comenzar_rastrillaje_simple() {
	Driver campus;
	campus.crearCampus(10,10);

	Dicc<Agente,aed2::Posicion> agentes;
	Agente a = 1;

	aed2::Posicion p;
	p.x = 1;
	p.y = 1;

	agentes.Definir(a,p);

	campus.comenzarRastrillaje(agentes);
	ASSERT(campus.cantAgentes() == 1);
}
Ejemplo n.º 11
0
void test_mas_vigilante()
{
// 3 primeras lineas antes de que ingresen los estudiantes
//     1   2   3   4   5
// 1 | A |   | A |   | O
// 2 |   | A |   | O | 
// 3 ...
// Los hippies ingresan en (2,1) y (4,1) los huecos. El Agente en (3,1) se transforma en el mas vigilante	
	Driver campus;
	campus.crearCampus(10,10);

	aed2::Posicion o;
	o.x = 4; 
	o.y = 2;

	campus.agregarObstaculo(o);

	aed2::Posicion o2;
	o2.x = 5; 
	o2.y = 1;

	campus.agregarObstaculo(o2);


	Dicc<Agente,aed2::Posicion> agentes;
	Agente a = 1;
	Agente a2 = 2;
	Agente a3 = 3;

	aed2::Posicion p;
	p.x = 1;
	p.y = 1;

	aed2::Posicion p2;
	p2.x = 2;
	p2.y = 2;

	aed2::Posicion p3;
	p3.x = 3;
	p3.y = 1;

	agentes.Definir(a,p);
	agentes.Definir(a2,p2);
	agentes.Definir(a3,p3);

	campus.comenzarRastrillaje(agentes);

	aed2::Posicion ph;
	ph.x = 2;
	ph.y = 1;

	Nombre h = "hippie";
	campus.ingresarHippie(h,ph);

	aed2::Posicion ph2;
	ph2.x = 4;
	ph2.y = 1;

	Nombre h2 = "hippie2";
	campus.ingresarHippie(h2,ph2);

	ASSERT(campus.cantHippiesAtrapados(a) == 1);
	ASSERT(campus.cantHippiesAtrapados(a2) == 1);
	ASSERT(campus.cantHippiesAtrapados(a3) == 2);

	ASSERT(campus.masVigilante() == a3);

}
Ejemplo n.º 12
0
void primerRutina(){

	Driver dr;

	dr.crearCampus(3,5);
	/*if(dr.columnas() == 3 && dr.filas() == 5){
		cout << "Las filas y columnas estan bien." << endl;
	}*/
	cout << "Campus Vacío." << endl;
 	

	/*
	PANTALLA A SIMULAR
	H X E
	X - X
	- - X
	A - A
	- A A

	DONDE '-' ES NADA 'H' ES HIPPIE 'A' ES AGENTE Y 'E' ES ESTUDIANTE

	TESTEO: 
	>>MOVER AGENTES ESTUDIANTE Y HIPPIE A POSICIONES NO VÁLIDAS O NO POSIBLES DE MOVER Y QUE SIGAN IGUALES.
	>>INTRODUCIR HIPPIES Y ESTUDIANTES SUCESIVAMENTE EN LA ESQUINA INFERIOR IZQUIERDA Y IR VIENDO AVANCE EN PUNTAJES Y SANCIONES
	>>BLOQUEAR AGENTES
	>>MOVER TODOS AGENTES OTRA VEZ PARA DEJAR UNA BUENA SALIDA DISPONIBLE
	*/

	dr.agregarObstaculo({2,1});
	dr.agregarObstaculo({1,2});
	dr.agregarObstaculo({3,2});
	dr.agregarObstaculo({3,3});

	cout << "Campus con solo Obstátuclos." << endl;

	Dicc<Agente,aed2::Posicion> d;
	d.Definir(1,{1,4});
	d.Definir(2,{2,5});
	d.Definir(4,{3,4});
	d.Definir(3,{3,5});

	dr.comenzarRastrillaje(d);
	
	cout << "Campus con solo Obstátuclos y agentes." << endl;
	cout << dr << endl;

	dr.ingresarEstudiante("Estudiante base",{3,1});
	dr.ingresarHippie("Hippie base",{1,1});
	
	cout << "Con un Hippie y un Estudiante." << endl;
	cout << dr << endl;

	//Parece que los estudiantes por requiere tiene que tener una posición donde moverse
	aed2::Posicion p1 = dr.posEstudianteYHippie("Estudiante base");
	/*dr.moverEstudiante("Estudiante base",abajo);
	dr.moverEstudiante("Estudiante base",abajo);
	dr.moverEstudiante("Estudiante base",abajo);
	cout << dr << endl;*/
	aed2::Posicion p2 = dr.posEstudianteYHippie("Estudiante base");
	/*dr.moverEstudiante("Estudiante base",izq);
	dr.moverEstudiante("Estudiante base",izq);
	dr.moverEstudiante("Estudiante base",izq);
	cout << dr << endl;*/
	aed2::Posicion p3 = dr.posEstudianteYHippie("Estudiante base");
	//dr.moverEstudiante("Estudiante base",der);
	//dr.moverEstudiante("Estudiante base",der);
	//dr.moverEstudiante("Estudiante base",der);
	cout << dr << endl;

	//assert( !posicionesIguales(p1,p2) || !posicionesIguales(p2, p3)  || !dr.ocupada(p1) || !dr.ocupada(p2) || !dr.ocupada(p3)); 
	//out << "No bardeo moviendo el estudiante Encerrado." << endl;

	p1 = dr.posEstudianteYHippie("Hippie base");
	dr.moverHippie("Hippie base");
	p2 = dr.posEstudianteYHippie("Hippie base");
	dr.moverHippie("Hippie base");
	dr.moverHippie("Hippie base");
	p3 = dr.posEstudianteYHippie("Hippie base");

	cout<< "primer assert : "  << ( !posicionesIguales(p1, p2) || !posicionesIguales(p2, p3) || !dr.ocupada(p3) || !dr.ocupada(p2) || !dr.ocupada(p1) ) << endl;
	assert( !posicionesIguales(p1, p2) || !posicionesIguales(p2, p3) || !dr.ocupada(p3) || !dr.ocupada(p2) || !dr.ocupada(p1));
	cout << "No bardeo moviendo el hippie Encerrado." << endl;
	cout << dr << endl;


	p1 = dr.posAgente(3);
	dr.moverAgente(3);
	p2 = dr.posAgente(3);
	dr.moverAgente(3);
	p3 = dr.posAgente(3);

	assert( !posicionesIguales(p1, p2) || !posicionesIguales(p2, p3) || !dr.ocupada(p3) || !dr.ocupada(p2) || !dr.ocupada(p1));
	cout << "No bardeo moviendo el Agente Encerrado." << endl << endl << endl;

	cout << dr << endl;
	p1 = dr.posAgente(4);
	dr.moverAgente(4);
	cout << dr << endl;
	p2 = dr.posAgente(4);
	dr.moverAgente(4);
	cout << dr << endl;
	p3 = dr.posAgente(4);

	assert( posicionesIguales(p1, p2) || posicionesIguales(p2, p3) || !dr.ocupada(p3) || dr.ocupada(p2) || dr.ocupada(p1));
	cout << "Se movió el agente 4 bien." << endl;

	/*
	CASO COMENTADO: EL REQUIERE DICE QUE NO DEBERÌAN ENTRAR ALUMNOS EN POS OCUPADAS
	*/
	//No debería poder entrar
	/*for(Nat i =1; i < 4 ; i++){
		dr.ingresarHippie("Alto Recursante",{i,1});
		cout << " lo ingrese? "<< endl;
		cout << dr << endl;
	}

	cout << dr << endl;

	p1 = dr.posEstudianteYHippie("Alto Recursante");

	assert(dr.ocupada(p1));*/

	aed2::Agente poli = dr.masVigilante();
	cout << "Mas vigilante: " << poli << endl;
	cout << "Cantidad de hippis atrapados: " << dr.cantHippiesAtrapados(poli) << endl;
	cout << "Cantidad de sanciones: "<< dr.cantSanciones(poli) << endl;

	aed2::Conj<aed2::Agente> conMismasSanciones = dr.conMismasSanciones(poli);
	aed2::Conj<aed2::Agente> conMismasSancionesAux = dr.conKSanciones(dr.cantSanciones(poli));
	aed2::Conj<aed2::Agente> conKSanciones = dr.conKSanciones(0);
	cout << "Cardinal con mismas sanciones: "<< dr.conMismasSanciones(poli).Cardinal() << endl;
	cout << "Cardinal con mismas sanciones: "<< dr.conKSanciones(dr.cantSanciones(poli)).Cardinal() << endl;
	cout << "Cardinal con mismas sanciones: "<< dr.conKSanciones(0) << endl;
	//Parece que no tenemos una igualdad de conjuntos desarrollada;
	//assert( !(conMismasSanciones == conKSanciones) || !(conMismasSancionesAux == conKSanciones));
	//asique hacemos esto y confiamos en alá
	cout << ( !conjuntosIguales(conMismasSanciones, conKSanciones) || !conjuntosIguales(conMismasSancionesAux, conKSanciones) ) << endl;

	assert( ( !conjuntosIguales(conMismasSanciones, conKSanciones) || !conjuntosIguales(conMismasSancionesAux, conKSanciones) ) );

	cout << dr << endl;
	/*
	//ver que parametro toma iesimoAgente
	aed2::Agente agenteAux;
	for(Nat i =1; i < 5 ; i++){
		agenteAux = dr.iesimoAgente(i);
		assert( dr.cantSanciones(agenteAux) != dr.cantHippiesAtrapados(agenteAux) || 
			dr.conKSanciones( dr.cantSanciones(agenteAux) ) != dr.conMismasSanciones(agenteAux) ||
			dr.conKSanciones( dr.cantSanciones(dr.masVigilante()) ) != dr.conMismasSanciones(agenteAux) );
	}
	cout << "Todos los agentes estan bien inicializados." << endl;*/
	/*
	//Empiezo a poner y sacar estudiantes en la pos (1,5) y voy testeando conKSanciones, y viendo cuando ya no pueden moverse por bloquearse
	aed2::Posicion posClave(1,5);
	for (Nat i =0 ; i< 15 ; i ++){
		dr.ingresarEstudiante("ElBRAYAN", posClave);
		assert ( posClave != dr.posEstudianteYHippie("ElBRAYAN") || !dr.ocupada(posClave) );
		
		cout << "Se agrega por vez Num: " << i << " un estudiante." << endl;
		cout << dr <<endl;
 
		dr.moverEstudiante("ElBRAYAN", abajo);

		cout << dr << endl;

		cout << "Agentes con 0 sanciones: " << dr.conKSanciones(0) << endl;

		cout << "Agentes con " << i+1 << " sanciones: " << dr.conKSanciones(i+1) << endl;
		
	}

	//Empiezo a poner y sacar Hippies en la pos (1,5) y voy testeando conKSanciones, y viendo cuando ya no pueden moverse por bloquearse
	for (int i =0 ; i< 15 ; i ++){
		cout << "Se agrega por vez Num: " << i+1 << " un hippie." << endl;

		dr.ingresarHippie("ElBRAYAN", posClave);
		cout << dr <<endl;

		assert ( posClave == dr.posEstudianteYHippie("ElBRAYAN") || dr.ocupada(posClave) );

		assert ( dr.cantHippiesAtrapados( dr.masVigilante() ) != i+1 );
		//SOLO PUEDO ACCEDER POR masVigilante a un agente? patetico....

	}
	
	cout << "Los agentes incrementaron satisfactoriamente sus atrapadas." << endl;

	cout << "Agentes con 15 sanciones: " << dr.conKSanciones(15) << endl;
	cout << "Agentes con 0 sanciones: " << dr.conKSanciones(0) << endl;

	cout << dr<< endl;

	//Veamos si los bloqueados pueden moverse;
	Conj<Agente> agentesQuietos = dr.conKSanciones(15);
	Conj<Agente>::const_Iterador itAgentesQuietos = agentesQuietos.crearIt();
	
	while( itAgentesQuietos.HaySiguiente() ){
		dr.moverAgente(itAgentesQuietos.Siguiente());
		cout << dr << endl; 
		itAgentesQuietos.Avanzar();
	}

	//Veamos si los no bloqueados pueden moverse;
	Conj<Agente> agentesNoQuietos = dr.conKSanciones(0);
	Conj<Agente>::Iterador itAgentesNoQuietos = agentesNoQuietos.crearIt();
	
	while( itAgentesNoQuietos.HaySiguiente() ){
		dr.moverAgente(itAgentesNoQuietos.Siguiente());
		cout << dr << endl; 
		itAgentesNoQuietos.Avanzar();
	}*/
}