import java.util.Date;
import java.util.Vector;

import dominio.Arco;
import dominio.ArcoEspera;
import dominio.Ciudad;
import dominio.Cruce;
import dominio.Nodo;
import dominio.Posicion;
import dominio.Salida;
import dominio.Semaforo;
import dominio.Utilidades;
import dominio.Vehiculo;

/**
 * @author Sergio
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class MujavaCiudad {

	private Ciudad cr;
	
	private Arco tinte1, tinte2, tinte3;
	private Arco reySanto1, reySanto2, reySanto3;
	private Arco ciruela1, ciruela2, ciruela3;
	private Arco alarcos1, alarcos2;
	private Arco gOrtega, avdaMancha, juanCaba, montesa;
	private Arco ronda1e, ronda2e, ronda3e, ronda4e;
	private Arco ronda1s, ronda2s, ronda3s, ronda4s;
	private Arco ronda1be, ronda2be, ronda3be, ronda4be;
	private Arco ronda1bs, ronda2bs, ronda3bs, ronda4bs;
	private Arco ficticio1, ficticio2, ficticio3e, ficticio3s, ficticio4e, ficticio4s;
	private Arco ficticio3be, ficticio3bs, ficticio4be, ficticio4bs;
	private Arco ficticio5, ficticio6, ficticio7, ficticio8;
	private Arco ficticio9, ficticio10e, ficticio10s, ficticio11, ficticio12e, ficticio12s;
	private Arco ficticio10be, ficticio10bs, ficticio12be, ficticio12bs;
	
	private Nodo nodo1, nodo3, nodo4, nodo5, nodo6, nodo7;
	private Nodo nodo8, nodo10, nodo11, nodo12, nodo13, nodo14;
	private Nodo nodo2_1, nodo2_2, nodo2_3, nodo2_4, nodo2_5;
	private Nodo nodo7_1, nodo7_2, nodo7_3, nodo7_4, nodo7_5;
	private Nodo nodo9_1, nodo9_2, nodo9_3, nodo9_4;

	private Vehiculo coche, coche2;
	
	private Cruce cruce1, cruce2_2, cruce7_2, cruce8, cruce6, cruce5, cruce4, cruce3, cruce11;
	private Cruce cruce10, cruce12, cruce13, cruce14, cruce2_3, cruce7_5;
	private Cruce cruce9_1, cruce9_2, cruce9_3, cruce9_4;
	private Semaforo semaforo2_1, semaforo2_5, semaforo2_4;
	private Semaforo semaforo7_1, semaforo7_3, semaforo7_4;
	
	private Salida salida;
	private String fecha = "";
	
	public void setUp(){
		
		Date cal = new Date();
		fecha = ""+cal.getDate()+"-"+(cal.getMonth()+1)+"-"+(cal.getYear()+1900)+" "+cal.getHours()+"."+cal.getMinutes()+"."+cal.getSeconds();
		
		//Construir los elementos de la ciudad
		cr = new Ciudad();
		
		salida = cr.getSalida();
		
		tinte1 = new Arco("tinte1",1,60.0,"stop",false); //nombre,n�carriles,longitud,preferencia,secundario
		tinte2 = new Arco("tinte2",1,20.0,"preferencia",false);
		tinte3 = new Arco("tinte3",1,45.0,"preferencia",false);
		reySanto1 = new Arco("reySanto1",1,35.0,"preferencia",false); 
		reySanto2 = new Arco("reySanto2",1,60.0,"stop",false);
		reySanto3 = new Arco("reySanto3",1,150.0,"stop",false); 
		ciruela1 = new Arco("ciruela1",1,110.0,"preferencia",false);
		ciruela2 = new Arco("ciruela2",1,50.0,"preferencia",false);
		ciruela3 = new Arco("ciruela3",1,100.0,"preferencia",false);
		alarcos1 = new Arco("alarcos1",1,100.0,"preferencia",false);
		alarcos2 = new Arco("alarcos2",1,100.0,"preferencia",false);
		gOrtega = new Arco("gOrtega",1,50.0,"stop",false);
		ronda1e = new Arco("ronda1e",2,30.0,"preferencia",false);
		ronda2e = new Arco("ronda2e",2,75.0,"preferencia",false);
		ronda3e = new Arco("ronda3e",2,300.0,"preferencia",false);
		ronda4e = new Arco("ronda4e",2,150.0,"preferencia",false);
		ronda1s = new Arco("ronda1s",2,30.0,"preferencia",false);
		ronda2s = new Arco("ronda2s",2,75.0,"preferencia",false);
		ronda3s = new Arco("ronda3s",2,300.0,"preferencia",false);
		ronda4s = new Arco("ronda4s",2,150.0,"preferencia",false);
		ronda1be = new Arco("ronda1be",1,30.0,"preferencia",true);
		ronda2be = new Arco("ronda2be",1,75.0,"preferencia",true);
		ronda3be = new Arco("ronda3be",1,300.0,"preferencia",true);
		ronda4be = new Arco("ronda4be",1,150.0,"preferencia",true);
		ronda1bs = new Arco("ronda1bs",1,30.0,"preferencia",true);
		ronda2bs = new Arco("ronda2bs",1,75.0,"preferencia",true);
		ronda3bs = new Arco("ronda3bs",1,300.0,"preferencia",true);
		ronda4bs = new Arco("ronda4bs",1,150.0,"preferencia",true);
		avdaMancha = new Arco("avdaMancha",1,100.0,"preferencia",false);
		juanCaba = new Arco("juanCaba",1,60.0,"preferencia",false);
		montesa = new Arco("montesa",1,150.0,"stop",false);
		ficticio1 = new Arco("ficticio1",1,6.0,"preferencia",false);
		ficticio2 = new Arco("ficticio2",2,6.0,"preferencia",false);
		ficticio3e = new Arco("ficticio3e",2,6.0,"preferencia",false);
		ficticio3s = new Arco("ficticio3s",2,6.0,"preferencia",false);
		ficticio4e = new Arco("ficticio4e",2,6.0,"preferencia",false);
		ficticio4s = new Arco("ficticio4s",2,6.0,"preferencia",false);
		ficticio3be = new Arco("ficticio3be",1,6.0,"preferencia",true);
		ficticio3bs = new Arco("ficticio3bs",1,6.0,"preferencia",true);
		ficticio4be = new Arco("ficticio4be",1,6.0,"preferencia",true);
		ficticio4bs = new Arco("ficticio4bs",1,6.0,"preferencia",true);
		ficticio5 = new Arco("ficticio5",1,15.0,"preferencia",false);
		ficticio6 = new Arco("ficticio6",1,15.0,"preferencia",false);
		ficticio7 = new Arco("ficticio7",1,15.0,"preferencia",false);
		ficticio8 = new Arco("ficticio8",1,15.0,"preferencia",false);
		ficticio9 = new Arco("ficticio9",1,6.0,"preferencia",false);
		ficticio10e = new Arco("ficticio10e",2,6.0,"preferencia",false);
		ficticio10s = new Arco("ficticio10s",2,6.0,"preferencia",false);
		ficticio11 = new Arco("ficticio11",1,6.0,"preferencia",false);
		ficticio12e = new Arco("ficticio12e",2,6.0,"preferencia",false);
		ficticio12s = new Arco("ficticio12s",2,6.0,"preferencia",false);
		ficticio10be = new Arco("ficticio10be",1,6.0,"preferencia",true);
		ficticio10bs = new Arco("ficticio10bs",1,6.0,"preferencia",true);
		ficticio12be = new Arco("ficticio12be",1,6.0,"preferencia",true);
		ficticio12bs = new Arco("ficticio12bs",1,6.0,"preferencia",true);

		
		nodo1 = new Nodo("nodo1");
		nodo3 = new Nodo("nodo3");
		nodo4 = new Nodo("nodo4");
		nodo5 = new Nodo("nodo5");
		nodo6 = new Nodo("nodo6");
		nodo7 = new Nodo("nodo7");
		nodo8 = new Nodo("nodo8");
		nodo10 = new Nodo("nodo10");
		nodo11 = new Nodo("nodo11");
		nodo12 = new Nodo("nodo12");
		nodo13 = new Nodo("nodo13");
		nodo14 = new Nodo("nodo14");
		
		nodo2_1 = new Nodo("nodo2_1");
		nodo2_2 = new Nodo("nodo2_2");
		nodo2_3 = new Nodo("nodo2_3");
		nodo2_4 = new Nodo("nodo2_4");
		nodo2_5 = new Nodo("nodo2_5");
		nodo7_1 = new Nodo("nodo7_1");
		nodo7_2 = new Nodo("nodo7_2");
		nodo7_3 = new Nodo("nodo7_3");
		nodo7_4 = new Nodo("nodo7_4");
		nodo7_5 = new Nodo("nodo7_5");
		nodo9_1 = new Nodo("nodo9_1");
		nodo9_2 = new Nodo("nodo9_2");
		nodo9_3 = new Nodo("nodo9_3");
		nodo9_4 = new Nodo("nodo9_4");
		
		//elementos de los nodos
		cruce1 = new Cruce("cruce1");
		cruce2_2 = new Cruce("cruce2_2");
		cruce7_2 = new Cruce("cruce7_2");
		cruce8 = new Cruce("cruce8");
		cruce6 = new Cruce("cruce6");
		cruce5 = new Cruce("cruce5");
		cruce4 = new Cruce("cruce4");
		cruce3 = new Cruce("cruce3");
		cruce11 = new Cruce("cruce11");
		cruce10 = new Cruce("cruce10");
		cruce12 = new Cruce("cruce12");
		cruce13 = new Cruce("cruce13");
		cruce14 = new Cruce("cruce14");
		cruce2_3 = new Cruce("cruce2_3");
		cruce7_5 = new Cruce("cruce7_5");
		cruce9_1 = new Cruce("cruce9_1");
		cruce9_2 = new Cruce("cruce9_2");
		cruce9_3 = new Cruce("cruce9_3");
		cruce9_4 = new Cruce("cruce9_4");
		
		semaforo2_1 = new Semaforo("semaforo2_1","rojo",5.0,1.0,5.0,1.0);
		semaforo2_4 = new Semaforo("semaforo2_4","verde",5.0,1.0,5.0,1.0);
		semaforo2_5 = new Semaforo("semaforo2_5","verde",5.0,1.0,5.0,1.0);
		semaforo7_1 = new Semaforo("semaforo7_1","verde",5.0,1.0,5.0,1.0);
		semaforo7_3 = new Semaforo("semaforo7_3","rojo",5.0,1.0,5.0,1.0);
		semaforo7_4 = new Semaforo("semaforo7_4","rojo",5.0,1.0,5.0,1.0);
		
				
		//origen y destino de un imagenes.arco
		tinte1.setOrigen(nodo13); tinte1.setDestino(nodo9_2);
		tinte2.setOrigen(nodo9_4); tinte2.setDestino(nodo6);
		tinte3.setOrigen(nodo6); tinte3.setDestino(nodo5);
		reySanto1.setOrigen(nodo11); reySanto1.setDestino(nodo10);
		reySanto2.setOrigen(nodo10); reySanto2.setDestino(nodo9_1);
		reySanto3.setOrigen(nodo8); reySanto3.setDestino(nodo9_3);
		ciruela1.setOrigen(nodo4); ciruela1.setDestino(nodo2_1);
		ciruela2.setOrigen(nodo5); ciruela2.setDestino(nodo4);
		ciruela3.setOrigen(nodo5); ciruela3.setDestino(nodo11);
		alarcos1.setOrigen(nodo14); alarcos1.setDestino(nodo13);
		alarcos2.setOrigen(nodo13); alarcos2.setDestino(nodo12);
		gOrtega.setOrigen(nodo10); gOrtega.setDestino(nodo12);
		avdaMancha.setOrigen(nodo6); avdaMancha.setDestino(nodo7_1);
		juanCaba.setOrigen(nodo4); juanCaba.setDestino(nodo3);
		montesa.setOrigen(nodo3); montesa.setDestino(nodo11);
		ronda1e.setOrigen(nodo14); ronda1e.setDestino(nodo8);
		ronda2e.setOrigen(nodo8); ronda2e.setDestino(nodo7_4);
		ronda3e.setOrigen(nodo7_3); ronda3e.setDestino(nodo2_4);
		ronda4e.setOrigen(nodo2_5); ronda4e.setDestino(nodo1);
		ronda1s.setOrigen(nodo8); ronda1s.setDestino(nodo14);
		ronda2s.setOrigen(nodo7_4); ronda2s.setDestino(nodo8);
		ronda3s.setOrigen(nodo2_4); ronda3s.setDestino(nodo7_3);
		ronda4s.setOrigen(nodo1); ronda4s.setDestino(nodo2_5);
		ficticio1.setOrigen(nodo2_1); ficticio1.setDestino(nodo2_2);
		ficticio2.setOrigen(nodo2_2); ficticio2.setDestino(nodo2_3);
		ficticio3e.setOrigen(nodo2_4); ficticio3e.setDestino(nodo2_2);
		ficticio3s.setOrigen(nodo2_2); ficticio3s.setDestino(nodo2_4);
		ficticio4e.setOrigen(nodo2_5); ficticio4e.setDestino(nodo2_2);
		ficticio4s.setOrigen(nodo2_2); ficticio4s.setDestino(nodo2_5);
		ficticio5.setOrigen(nodo9_2); ficticio5.setDestino(nodo9_3);
		ficticio6.setOrigen(nodo9_3); ficticio6.setDestino(nodo9_4);
		ficticio7.setOrigen(nodo9_4); ficticio7.setDestino(nodo9_1);
		ficticio8.setOrigen(nodo9_1); ficticio8.setDestino(nodo9_2);
		ficticio9.setOrigen(nodo7_1); ficticio9.setDestino(nodo7_2);
		ficticio10e.setOrigen(nodo7_4); ficticio10e.setDestino(nodo7_2);
		ficticio10s.setOrigen(nodo7_2); ficticio10s.setDestino(nodo7_4);
		ficticio11.setOrigen(nodo7_2); ficticio11.setDestino(nodo7_5);
		ficticio12e.setOrigen(nodo7_2); ficticio12e.setDestino(nodo7_3);
		ficticio12s.setOrigen(nodo7_3); ficticio12s.setDestino(nodo7_2);
		
		
		//a�adir los elementos a los nodos
		nodo1.addElemento(cruce1);
		nodo2_1.addElemento(semaforo2_1);
		nodo2_4.addElemento(semaforo2_4);
		nodo2_5.addElemento(semaforo2_5);
		nodo2_2.addElemento(cruce2_2);
		nodo2_3.addElemento(cruce2_3);
		nodo3.addElemento(cruce3);
		nodo4.addElemento(cruce4);
		nodo5.addElemento(cruce5);
		nodo6.addElemento(cruce6);
		nodo7_3.addElemento(semaforo7_3);
		nodo7_2.addElemento(cruce7_2);
		nodo7_4.addElemento(semaforo7_4);
		nodo7_1.addElemento(semaforo7_1);
		nodo7_5.addElemento(cruce7_5);
		nodo8.addElemento(cruce8);
		nodo9_1.addElemento(cruce9_1);
		nodo9_2.addElemento(cruce9_2);
		nodo9_3.addElemento(cruce9_3);
		nodo9_4.addElemento(cruce9_4);
		nodo10.addElemento(cruce10);
		nodo11.addElemento(cruce11);
		nodo12.addElemento(cruce12);
		nodo13.addElemento(cruce13);
		nodo14.addElemento(cruce14);
		
		//a�adir elementos a la ciudad
		//a�adir los nodos
		cr.addNodo(nodo1);  cr.addNodo(nodo3); cr.addNodo(nodo4); cr.addNodo(nodo5);
		cr.addNodo(nodo6); cr.addNodo(nodo7); cr.addNodo(nodo8); cr.addNodo(nodo10);
		cr.addNodo(nodo11); cr.addNodo(nodo12);	cr.addNodo(nodo13); cr.addNodo(nodo14);
		cr.addNodo(nodo2_1); cr.addNodo(nodo2_2); cr.addNodo(nodo2_3); cr.addNodo(nodo2_4); cr.addNodo(nodo2_5);
		cr.addNodo(nodo7_1); cr.addNodo(nodo7_2); cr.addNodo(nodo7_3); cr.addNodo(nodo7_4); cr.addNodo(nodo7_5);
		cr.addNodo(nodo9_1); cr.addNodo(nodo9_2); cr.addNodo(nodo9_3); cr.addNodo(nodo9_4);
		
		//a�adir los arcos
		cr.addArco(tinte1); cr.addArco(tinte2); cr.addArco(tinte3);
		cr.addArco(reySanto1); cr.addArco(reySanto2); cr.addArco(reySanto3);
		cr.addArco(ciruela1); cr.addArco(ciruela2);	cr.addArco(ciruela3);
		cr.addArco(alarcos1); cr.addArco(alarcos2);
		cr.addArco(gOrtega); cr.addArco(avdaMancha); cr.addArco(juanCaba); cr.addArco(montesa);
		cr.addArco(ficticio1); cr.addArco(ficticio2);  cr.addArco(ficticio5);cr.addArco(ficticio6);
		cr.addArco(ficticio7); cr.addArco(ficticio8); cr.addArco(ficticio9); cr.addArco(ficticio11);
		cr.addArco(ronda1e); cr.addArco(ronda2e); cr.addArco(ronda3e); cr.addArco(ronda4e);
		cr.addArco(ronda1s); cr.addArco(ronda2s); cr.addArco(ronda3s); cr.addArco(ronda4s);
		cr.addArco(ficticio3e); cr.addArco(ficticio3s);	cr.addArco(ficticio4e); cr.addArco(ficticio4s);
		cr.addArco(ficticio10e); cr.addArco(ficticio10s);  cr.addArco(ficticio12e); cr.addArco(ficticio12s);
	}
	
	
	/********************************** METODOS DE PRUEBA ************************************/
	
	public String testExisteCamino(){
		String tituloPrueba = "testExisteCamino";
		try{	
			tituloPrueba+=(cr.existeCamino(nodo1,nodo7_3));		
			tituloPrueba+=(cr.existeCamino(nodo1,nodo3));
			tituloPrueba+=(cr.existeCamino(nodo3,nodo1));
			tituloPrueba+=(cr.existeCamino(nodo5,nodo12));
			tituloPrueba+=(cr.existeCamino(nodo14,nodo1));
			tituloPrueba+=(cr.existeCamino(nodo1,nodo13));			
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testNoExisteCamino(){
		String tituloPrueba = "testNoExisteCamino";
		try{	
			tituloPrueba+=(!cr.existeCamino(nodo12,nodo1));
			tituloPrueba+=(!cr.existeCamino(nodo12,nodo6));
			tituloPrueba+=(!cr.existeCamino(nodo1,nodo1));		
			tituloPrueba+=(!cr.existeCamino(nodo12,nodo13));
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
		
	public String testCaminoMinimo(){
		String tituloPrueba = "testCaminoMinimo";
		try{
			Vector caminoMinimo = cr.caminoMinimo(nodo1,nodo5);
			tituloPrueba+=(caminoMinimo.size() == 12);
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(0)).equals(nodo1));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(1)).equals(nodo2_5));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(2)).equals(nodo2_2));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(3)).equals(nodo2_4));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(4)).equals(nodo7_3));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(5)).equals(nodo7_2));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(6)).equals(nodo7_4));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(7)).equals(nodo8));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(8)).equals(nodo9_3));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(9)).equals(nodo9_4));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(10)).equals(nodo6));
			tituloPrueba+=(((Nodo)caminoMinimo.elementAt(11)).equals(nodo5));

		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testOperacionesDeTiempoSemaforos(){ //funcionamiento de los semaforos
		String tituloPrueba = "testOperacionesDeTiempoSemaforos";
		double tiempo = 1.0;
		boolean terminar = false;
		
		//para la prueba 2_1 verde, 2_4 rojo, 2_5 rojo
		semaforo2_1.setEstado("verde");
		semaforo2_4.setEstado("rojo");
		semaforo2_5.setEstado("rojo");
		
		try{
			while(!terminar){				
				nodo2_1.operacionesDeTiempo();
				nodo2_4.operacionesDeTiempo();
				nodo2_5.operacionesDeTiempo();
				
				if(tiempo == 1.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 6.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("ambar"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 7.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("verde"));
				}else if(tiempo == 12.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("ambar"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("ambar"));
				}else if(tiempo == 13.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 14.0){
					terminar = true;
				}				
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}		
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testOperacionesDeTiempoSemaforos2(){ //en nodos que no tienen imagenes.semaforo
		String tituloPrueba = "testOperacionesDeTiempoSemaforos2";
		double tiempo = 0.0;
		boolean terminar = false;
		
		try{
			while(!terminar){
				nodo1.operacionesDeTiempo();
						
				if(tiempo == 0.0){
					tituloPrueba+=(((Semaforo)nodo1.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=("Deberia haberse lanzado una excepcion");
				}
			}		
		}catch(Exception e){
			tituloPrueba+=("Capturada excepci�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testOperacionesDeTiempoSemaforos3(){ //funcionamiento de los semaforos con retraso de uno
		String tituloPrueba = "testOperacionesDeTiempoSemaforos3";
		double tiempo = 1.0;
		boolean terminar = false;
		
		semaforo2_1 = new Semaforo("semaforo2_1","verde",5.0,1.0,10.0,1.0);
		semaforo2_4 = new Semaforo("semaforo2_4","rojo",5.0,1.0,10.0,5.0);
		semaforo2_5 = new Semaforo("semaforo2_5","rojo",5.0,1.0,10.0,1.0);
		nodo2_1.addElemento(semaforo2_1);
		nodo2_4.addElemento(semaforo2_4);
		nodo2_5.addElemento(semaforo2_5);
		
		try{
			while(!terminar){				
				nodo2_1.operacionesDeTiempo();
				nodo2_4.operacionesDeTiempo();
				nodo2_5.operacionesDeTiempo();
				
				if(tiempo == 1.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 6.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("ambar"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 7.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 12.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("ambar"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 13.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("verde"));
				}else if(tiempo == 17.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("verde"));
				}else if(tiempo == 18.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("ambar"));
				}else if(tiempo == 19.0){
					terminar = true;
				}				
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}		
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testOperacionesDeTiempoSemaforos4(){ //funcionamiento de los semaforos con retraso en uno
		String tituloPrueba = "testOperacionesDeTiempoSemaforos4";
		double tiempo = 1.0;
		boolean terminar = false;
		
		semaforo2_1 = new Semaforo("semaforo2_1","verde",20.0,1.0,40.0,1.0);
		semaforo2_4 = new Semaforo("semaforo2_4","rojo",20.0,1.0,40.0,20.0);
		semaforo2_5 = new Semaforo("semaforo2_5","rojo",20.0,1.0,40.0,1.0);
		nodo2_1.addElemento(semaforo2_1);
		nodo2_4.addElemento(semaforo2_4);
		nodo2_5.addElemento(semaforo2_5);
		
		try{
			while(!terminar){				
				nodo2_1.operacionesDeTiempo();
				nodo2_4.operacionesDeTiempo();
				nodo2_5.operacionesDeTiempo();
				
				if(tiempo == 1.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 21.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("ambar"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 22.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 42.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("ambar"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 43.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("verde"));
				}else if(tiempo == 63.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("ambar"));
				}else if(tiempo == 64.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 65.0){
					terminar = true;
				}				
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}		
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testOperacionesDeTiempoSemaforos5(){ //funcionamiento de los semaforos con retraso en uno
		String tituloPrueba = "testOperacionesDeTiempoSemaforos5";
		double tiempo = 1.0;
		boolean terminar = false;
		
		semaforo2_1 = new Semaforo("semaforo2_1","verde",20.0,3.0,40.0,1.0);
		semaforo2_4 = new Semaforo("semaforo2_4","rojo",20.0,3.0,40.0,20.0);
		semaforo2_5 = new Semaforo("semaforo2_5","rojo",20.0,3.0,40.0,1.0);
		nodo2_1.addElemento(semaforo2_1);
		nodo2_4.addElemento(semaforo2_4);
		nodo2_5.addElemento(semaforo2_5);
		
		try{
			while(!terminar){				
				nodo2_1.operacionesDeTiempo();
				nodo2_4.operacionesDeTiempo();
				nodo2_5.operacionesDeTiempo();
				
				if(tiempo == 1.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 23.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("ambar"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 24.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 45.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("ambar"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 47.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("verde"));
				}else if(tiempo == 67.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("ambar"));
				}else if(tiempo == 68.0){
					tituloPrueba+=(((Semaforo)nodo2_1.getElemento()).getEstado().equals("verde"));
					tituloPrueba+=(((Semaforo)nodo2_4.getElemento()).getEstado().equals("rojo"));
					tituloPrueba+=(((Semaforo)nodo2_5.getElemento()).getEstado().equals("rojo"));
				}else if(tiempo == 65.0){
					terminar = true;
				}				
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}		
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce(){ //un coche por varios cruces con preferencia
		String tituloPrueba = "testRecorridoVehiculoCruce";
		double tiempo = 1.0;
		Posicion posicion;
		
		try{
			coche = new Vehiculo("coche",36.0,nodo6,nodo3,cr,0);
			cr.addVehiculo(coche);
			
			while(!coche.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				coche.actualizarPosicion(tiempo);
				posicion = coche.determinarPosicion();
				coche.showPosicion(tiempo);
				
				if(tiempo == 1.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",2.5);
				}else if(tiempo == 2.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",7.5);
				}else if(tiempo == 3.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",15.0);
				}else if(tiempo == 4.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",25.0);
				}else if(tiempo == 6.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo5","tinte3",45.0);
				}else if(tiempo == 11.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo4","ciruela2",50.0);
				}else if(tiempo == 17.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo3","juanCaba",60.0);
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce2(){ //2 coches por los mismos cruces, uno mas rapido que otro
		String tituloPrueba = "testRecorridoVehiculoCruce2";
		double tiempo = 1.0;
		double retraso = 3.0; //tres segundos de retraso entre coche y coche
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",36.0,nodo6,nodo3,cr,0);
			coche2 = new Vehiculo("coche2",54.0,nodo6,nodo3,cr,(int)retraso);
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado")){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				
				if(tiempo == 1.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",2.5);
				}else if(tiempo == 3.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",15.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","tinte3",2.5);
				}else if(tiempo == 6.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo5","tinte3",45.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","tinte3",25.0);
				}else if(tiempo == 7.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo5","ciruela2",10.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","tinte3",37.5);
				}else if(tiempo == 9.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo5","ciruela2",30.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo5","ciruela2",15.0);
				}else if(tiempo == 11.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo4","ciruela2",50.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo5","ciruela2",44.0);
				}else if(tiempo == 13.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo4","juanCaba",20.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo4","juanCaba",14.0);//velocidad inicial y separacionTotal
				}else if(tiempo == 14.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo4","juanCaba",30.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo4","juanCaba",24.0);//separacion
				}else if(tiempo == 16.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo4","juanCaba",50.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo4","juanCaba",44.0);//velocidad reducida
				}else if(tiempo == 17.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo3");
				}else if(tiempo == 18.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo3");
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce3(){ //6 coches por los mismos cruces, unos mas rapidos que otros
		String tituloPrueba = "testRecorridoVehiculoCruce3";
		double tiempo = 1.0;
		double retraso = 2.0;
		double diferencia = retraso - tiempo;
		
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion();
		Posicion posicion4 = new Posicion();
		Posicion posicion5 = new Posicion();
		Posicion posicion6 = new Posicion();
		
		Vehiculo coche3, coche4, coche5, coche6;
		
		try{
			coche = new Vehiculo("coche",9.0,nodo9_4,nodo5,cr,0);
			coche2 = new Vehiculo("coche2",9.0,nodo9_4,nodo5,cr,(int)retraso);
			coche3 = new Vehiculo("coche3",9.0,nodo9_4,nodo5,cr,(int)retraso+1);
			coche4 = new Vehiculo("coche4",9.0,nodo9_4,nodo5,cr,(int)retraso+2);
			coche5 = new Vehiculo("coche5",9.0,nodo9_4,nodo5,cr,(int)retraso+3);
			coche6 = new Vehiculo("coche6",9.0,nodo9_4,nodo5,cr,(int)retraso+4);
			
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			cr.addVehiculo(coche3);
			cr.addVehiculo(coche4);
			cr.addVehiculo(coche5);
			cr.addVehiculo(coche6);
			
			while(!coche.getEstado().equals("eliminado")  || !coche2.getEstado().equals("eliminado") ||
				  !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado") ||
				  !coche5.getEstado().equals("eliminado") || !coche6.getEstado().equals("eliminado")){
				
				cr.operacionesDeTiempo(tiempo);
				
				if(!coche.getEstado().equals("eliminado")){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				if(!coche3.getEstado().equals("eliminado") && tiempo >= coche3.getRetraso()){
					coche3.actualizarPosicion(tiempo - diferencia - 1);
					posicion3 = coche3.determinarPosicion();
					coche3.showPosicion(tiempo);
				}
				if(!coche4.getEstado().equals("eliminado") && tiempo >= coche4.getRetraso()){
					coche4.actualizarPosicion(tiempo - diferencia - 2);
					posicion4 = coche4.determinarPosicion();
					coche4.showPosicion(tiempo);
				}
				if(!coche5.getEstado().equals("eliminado") && tiempo >= coche5.getRetraso()){
					coche5.actualizarPosicion(tiempo - diferencia - 3);
					posicion5 = coche5.determinarPosicion();
					coche5.showPosicion(tiempo);
				}
				if(!coche6.getEstado().equals("eliminado") && tiempo >= coche6.getRetraso()){
					coche6.actualizarPosicion(tiempo - diferencia - 4);
					posicion6 = coche6.determinarPosicion();
					coche6.showPosicion(tiempo);
				}
				
				if(tiempo == 6.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_4","tinte2",15.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_4","tinte2",9.0);
					//los demas coches aun no se han lanzado
				}else if(tiempo == 9.0){//coche4 ya puede entrar ya que salio coche
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",2.5);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_4","tinte2",16.5);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo9_4","tinte2",10.5);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo9_4","tinte2",2.5);
				}else if(tiempo == 13.0){//coche6 aun no tiene espacio para entrar al imagenes.arco
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",12.5);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","tinte3",5.0);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo9_4","tinte2",19.0);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo9_4","tinte2",12.5);
					tituloPrueba+=comprobarPosicion(posicion5,"nodo9_4","tinte2",5.0);
				}else if(tiempo == 14.0){//coche6 ya tiene espacio para entrar al imagenes.arco
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",15.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","tinte3",7.5);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo6","tinte2",20.0);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo9_4","tinte2",14.0);
					//podria entrar pero el imagenes.arco esta lleno de coches, solo caben 3
					tituloPrueba+=comprobarPosicion(posicion5,"nodo9_4","tinte2",7.5);
					tituloPrueba+=comprobarPosicion(posicion6,"nodo9_4","tinte2",0.0);
				}else if(tiempo == 26.0){//coche llega a su destino
					tituloPrueba+=comprobarPosicion(posicion,"nodo5","tinte3",45.0); //fin
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","tinte3",37.5);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo6","tinte3",30.0);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo6","tinte3",22.5);
					tituloPrueba+=comprobarPosicion(posicion5,"nodo6","tinte3",15.0);
					tituloPrueba+=comprobarPosicion(posicion6,"nodo6","tinte3",7.5);
				}else if(tiempo == 29.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo5");
				}else if(tiempo == 32.0){
					tituloPrueba+=comprobarPosicion(posicion3,"nodo5");
				}else if(tiempo == 35.0){
					tituloPrueba+=comprobarPosicion(posicion4,"nodo5");
				}else if(tiempo == 38.0){
					tituloPrueba+=comprobarPosicion(posicion5,"nodo5");
				}else if(tiempo == 41.0){
					tituloPrueba+=comprobarPosicion(posicion6,"nodo5");
				}
				
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce4(){ //varios coches por los mismos cruces, uno mas rapido que otro, con carril doble
		String tituloPrueba = "testRecorridoVehiculoCruce4";
		double tiempo = 1.0;
		double retraso = 3.0; //tres segundos de retraso entre coche y coche
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",36.0,nodo14,nodo7_5,cr,0);
			coche2 = new Vehiculo("coche2",54.0,nodo14,nodo7_5,cr,(int)retraso);
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado")){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				
				if(tiempo == 3.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo14","ronda1e",15.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo14","ronda1e",2.5);
				}else if(tiempo == 5.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo8","ronda1e",30.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo14","ronda1e",15.0); 
				}else if(tiempo == 10.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo8","ronda2e",50.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo8","ronda2eb",45.0); //cambia de carril
				}else if(tiempo == 12.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo8","ronda2e",70.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_4","ronda2eb",75.0);
				}else if(tiempo == 13.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_4","ronda2e",75.0);//semaforo en rojo
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_4","ronda2eb",75.0);//semaforo en rojo
				}else if(tiempo == 19.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_4","ronda2e",75.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_4","ficticio10e",2.5);//sale primero
				}else if(tiempo == 20.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_4","ronda2e",75.0); //aun no puede salir
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_2","ficticio10e",6.0); 
				}else if(tiempo == 21.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_4","ficticio10eb",2.5);//sale
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_5","ficticio11",6.0); //fin
				}else if(tiempo == 22.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_2","ficticio10eb",6.0);//fin
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce5(){ //dos coches en nodos en los que hay preferencia y stop
		String tituloPrueba = "testRecorridoVehiculoCruce5";
		double tiempo = 1.0;
		double retraso = 3.0; //tres segundos de retraso entre coche y coche
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",36.0,nodo10,nodo6,cr,0);
			coche2 = new Vehiculo("coche2",36.0,nodo13,nodo6,cr,(int)retraso);
			cr.addVehiculo(coche); cr.addVehiculo(coche2);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				if(!coche.getEstado().equals("eliminado")){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				
				if(tiempo == 10.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_2","tinte1",60.0); //llega primero, pero tiene stop
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_2","ficticio8",15.0); //llega segundo, tiene preferencia
				}else if(tiempo == 11.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_2","tinte1",60.0); //espera
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_2","ficticio5",10.0); //al tener preferencia sale
				}else if(tiempo == 12.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_2","ficticio5",2.5); 
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_3","ficticio5",15.0);
				}else if(tiempo == 17.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo6"); //fin
				}else if(tiempo == 18.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6"); //fin
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	
	public String testRecorridoVehiculoCruce6(){ //un coche por varios cruces alguno sin preferencia
		String tituloPrueba = "testRecorridoVehiculoCruce6";
		double tiempo = 1.0;
		Posicion posicion;
		Vector colaEntradaNodo = new Vector();
		
		try{
			coche = new Vehiculo("coche",36.0,nodo6,nodo3,cr,0);
			coche2 = new Vehiculo("coche2",54.0,nodo6,nodo3,cr,0);
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			
			while(!coche.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				coche.actualizarPosicion(tiempo);
				posicion = coche.determinarPosicion();
				coche.showPosicion(tiempo);
				
				if(tiempo == 1.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo6","tinte3",2.5);
				}else if(tiempo == 6.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo5","tinte3",45.0);
				}else if(tiempo == 11.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo4","ciruela2",50.0);
					//colaEntradaNodo = nodo4.getColaEntrada();
					//colaEntradaNodo.add(0,coche2);
					nodo4.setOcupado(true,coche2,ciruela2); //se ocupa el nodo 4, el coche tendra que esperar
				}else if(tiempo == 12.0){					
					tituloPrueba+=comprobarPosicion(posicion,"nodo4","ciruela2",50.0);
					//se queda esperando ya que no puede entrar
				}else if(tiempo == 16.0){
					//colaEntradaNodo.removeElementAt(0);
					nodo4.setOcupado(false,coche2,ciruela2); //el nodo se queda desocupado
				}else if(tiempo == 17.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo4","juanCaba",2.5);
				}else if(tiempo == 24.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo3");
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce7(){ //2 coches circulando por arcos de sentidos contrarios
		String tituloPrueba = "testRecorridoVehiculoCruce7";
		double tiempo = 1.0;
		double retraso = 9.0; //tres segundos de retraso entre coche y coche
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",54.0,nodo7_4,nodo14,cr,(int)retraso-2);
			coche2 = new Vehiculo("coche2",36.0,nodo14,nodo7_4,cr,(int)retraso);
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado") && tiempo >= coche.getRetraso()){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				
				if(tiempo == 7.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_4","ronda2s",15.0);
				}else if(tiempo == 13.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo8","ronda2s",75.0); //ocupa el nodo
					tituloPrueba+=comprobarPosicion(posicion2,"nodo8","ronda1e",30.0); //ocupa el nodo
				}else if(tiempo == 14.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo8","ronda1s",15.0); //no tienen que esperar
					tituloPrueba+=comprobarPosicion(posicion2,"nodo8","ronda2e",10.0);
				}else if(tiempo == 15.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo14","ronda1s",30.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo8","ronda2e",20.0);
				}else if(tiempo == 21.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_4","ronda2e",75.0);
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce8(){ //4 coches circulando por el mismo arco
		String tituloPrueba = "testRecorridoVehiculoCruce8";
		double tiempo = 1.0;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion();
		Posicion posicion4 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",36.0,nodo1,nodo2_5,cr,0);
			coche2 = new Vehiculo("coche2",62.0,nodo1,nodo2_5,cr,0);
			Vehiculo coche3 = new Vehiculo("coche",62.0,nodo1,nodo2_5,cr,0);
			Vehiculo coche4 = new Vehiculo("coche2",62.0,nodo1,nodo2_5,cr,0);
			cr.addVehiculo(coche); cr.addVehiculo(coche2);
			cr.addVehiculo(coche3); cr.addVehiculo(coche4);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")
					|| !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado") && tiempo >= coche.getRetraso()){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				if(!coche3.getEstado().equals("eliminado") && tiempo >= coche3.getRetraso()){
					coche3.actualizarPosicion(tiempo);
					posicion3 = coche3.determinarPosicion();
					coche3.showPosicion(tiempo);
				}
				if(!coche4.getEstado().equals("eliminado") && tiempo >= coche4.getRetraso()){
					coche4.actualizarPosicion(tiempo);
					posicion4 = coche4.determinarPosicion();
					coche4.showPosicion(tiempo);
				}
				
				
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba);
			//salida.crearInformeDeTiempos(tituloPrueba,cr);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce9(){ //4 coches circulando por el mismo arco
		String tituloPrueba = "testRecorridoVehiculoCruce9";
		double tiempo = 1.0;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion();
		Posicion posicion4 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",36.0,nodo1,nodo2_5,cr,0);
			coche2 = new Vehiculo("coche2",45.0,nodo1,nodo2_5,cr,3);
			Vehiculo coche3 = new Vehiculo("coche3",36.0,nodo1,nodo2_5,cr,6);
			Vehiculo coche4 = new Vehiculo("coche4",50.0,nodo1,nodo2_5,cr,7);
			cr.addVehiculo(coche); cr.addVehiculo(coche2);
			cr.addVehiculo(coche3); cr.addVehiculo(coche4);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")
					|| !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado") && tiempo >= coche.getRetraso()){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				if(!coche3.getEstado().equals("eliminado") && tiempo >= coche3.getRetraso()){
					coche3.actualizarPosicion(tiempo);
					posicion3 = coche3.determinarPosicion();
					coche3.showPosicion(tiempo);
				}
				if(!coche4.getEstado().equals("eliminado") && tiempo >= coche4.getRetraso()){
					coche4.actualizarPosicion(tiempo);
					posicion4 = coche4.determinarPosicion();
					coche4.showPosicion(tiempo);
				}
				
				
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba);
			//salida.crearInformeDeTiempos(tituloPrueba,cr);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce10(){ //8 coches circulando por el mismo arco
		String tituloPrueba = "testRecorridoVehiculoCruce10";
		double tiempo = 1.0;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion();
		Posicion posicion4 = new Posicion();
		Posicion posicion5 = new Posicion();
		Posicion posicion6 = new Posicion();
		Posicion posicion7 = new Posicion();
		Posicion posicion8 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",1,nodo8,nodo14,cr,0);
			coche2 = new Vehiculo("coche2",2,nodo8,nodo14,cr,0);
			Vehiculo coche3 = new Vehiculo("coche3",54,nodo8,nodo14,cr,0);
			Vehiculo coche4 = new Vehiculo("coche4",54,nodo8,nodo14,cr,0);
			Vehiculo coche5 = new Vehiculo("coche5",54,nodo8,nodo14,cr,0);
			Vehiculo coche6 = new Vehiculo("coche6",54,nodo8,nodo14,cr,0);
			Vehiculo coche7 = new Vehiculo("coche7",54,nodo8,nodo14,cr,0);
			Vehiculo coche8 = new Vehiculo("coche8",54,nodo8,nodo14,cr,0);
			cr.addVehiculo(coche); cr.addVehiculo(coche2);
			cr.addVehiculo(coche); cr.addVehiculo(coche2);
			cr.addVehiculo(coche5); cr.addVehiculo(coche7);
			cr.addVehiculo(coche6); cr.addVehiculo(coche8);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")
					|| !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado")
					|| !coche5.getEstado().equals("eliminado") || !coche6.getEstado().equals("eliminado")
					|| !coche7.getEstado().equals("eliminado") || !coche8.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado") && tiempo >= coche.getRetraso()){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				if(!coche3.getEstado().equals("eliminado") && tiempo >= coche3.getRetraso()){
					coche3.actualizarPosicion(tiempo);
					posicion3 = coche3.determinarPosicion();
					coche3.showPosicion(tiempo);
				}
				if(!coche4.getEstado().equals("eliminado") && tiempo >= coche4.getRetraso()){
					coche4.actualizarPosicion(tiempo);
					posicion4 = coche4.determinarPosicion();
					coche4.showPosicion(tiempo);
				}
				if(!coche5.getEstado().equals("eliminado") && tiempo >= coche5.getRetraso()){
					coche5.actualizarPosicion(tiempo);
					posicion5 = coche5.determinarPosicion();
					coche5.showPosicion(tiempo);
				}
				if(!coche6.getEstado().equals("eliminado") && tiempo >= coche6.getRetraso()){
					coche6.actualizarPosicion(tiempo);
					posicion6 = coche6.determinarPosicion();
					coche6.showPosicion(tiempo);
				}
				if(!coche7.getEstado().equals("eliminado") && tiempo >= coche7.getRetraso()){
					coche7.actualizarPosicion(tiempo);
					posicion7 = coche7.determinarPosicion();
					coche7.showPosicion(tiempo);
				}
				if(!coche8.getEstado().equals("eliminado") && tiempo >= coche8.getRetraso()){
					coche8.actualizarPosicion(tiempo);
					posicion8 = coche8.determinarPosicion();
					coche8.showPosicion(tiempo);
				}
				
				
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba);
			//salida.crearInformeDeTiempos(tituloPrueba,cr);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce11(){ //2 coches circulando hacia un mismo nodo, uno preferencia, otro no
		String tituloPrueba = "testRecorridoVehiculoCruce11";
		double tiempo = 1.0;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",54.0,nodo3,nodo10,cr,0);
			coche2 = new Vehiculo("coche2",36.0,nodo5,nodo10,cr,2);
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado") && tiempo >= coche.getRetraso()){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}	
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce12(){ //llenar un arco de coches
		String tituloPrueba = "testRecorridoVehiculoCruce12";
		double tiempo = 1.0;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion();
		Posicion posicion4 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",1,nodo9_4,nodo6,cr,0);
			coche2 = new Vehiculo("coche2",1,nodo9_4,nodo6,cr,0);
			Vehiculo coche3 = new Vehiculo("coche3",1,nodo9_4,nodo6,cr,0);
			Vehiculo coche4 = new Vehiculo("coche4",1,nodo9_4,nodo6,cr,0);
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado") && tiempo >= coche.getRetraso()){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}	
				if(!coche3.getEstado().equals("eliminado") && tiempo >= coche3.getRetraso()){
					coche3.actualizarPosicion(tiempo);
					posicion3 = coche3.determinarPosicion();
					coche3.showPosicion(tiempo);
				}
				if(!coche4.getEstado().equals("eliminado") && tiempo >= coche4.getRetraso()){
					coche4.actualizarPosicion(tiempo);
					posicion4 = coche4.determinarPosicion();
					coche4.showPosicion(tiempo);
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoCruce13(){ //un coche pasa al segundo carril y se encuentra otro q va mas lento q el
		String tituloPrueba = "testRecorridoVehiculoCruce13";
		double tiempo = 1.0;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion();
		Posicion posicion4 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",1,nodo1,nodo2_5,cr,0);
			coche2 = new Vehiculo("coche2",3,nodo1,nodo2_5,cr,0);
			Vehiculo coche3 = new Vehiculo("coche3",36,nodo1,nodo2_5,cr,0);
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			cr.addVehiculo(coche3);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado") && tiempo >= coche.getRetraso()){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}	
				if(!coche3.getEstado().equals("eliminado") && tiempo >= coche3.getRetraso()){
					coche3.actualizarPosicion(tiempo);
					posicion3 = coche3.determinarPosicion();
					coche3.showPosicion(tiempo);
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	
	public String testRecorridoVehiculoSemaforo1(){ //un coche por varios semaforos
		String tituloPrueba = "testRecorridoVehiculoSemaforo1";
		double tiempo = 1.0;
		Posicion posicion;
		
		try{
			coche = new Vehiculo("coche",36.0,nodo1,nodo8,cr,0);
			cr.addVehiculo(coche);
			
			while(!coche.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				coche.actualizarPosicion(tiempo);
				posicion = coche.determinarPosicion();
				coche.showPosicion(tiempo);
				
				if(tiempo == 17.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_5","ronda4s",150.0); //semaforo en verde
				}else if(tiempo == 18.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_5","ronda4s",150.0); //semaforo en ambar
				}else if(tiempo == 24.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_5","ronda4s",150.0); //semaforo en rojo
				}else if(tiempo == 25.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_5","ficticio4e",2.5); //semaforo en verde
				}else if(tiempo == 58.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_2","ficticio12s",6.0); //semaforo en verde
				}else if(tiempo == 59.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_4","ficticio10s",6.0); //semaforo en verde
				}else if(tiempo == 60.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_4","ficticio10s",6.0); //semaforo en ambar
				}else if(tiempo == 75.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo8");
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoSemaforo2(){ //dos coches a distintas velocidades por varios semaforos
		String tituloPrueba = "testRecorridoVehiculoSemaforo2";
		double tiempo = 1.0;
		double retraso = 6.0;
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",36.0,nodo1,nodo8,cr,(int)retraso-3);
			coche2 = new Vehiculo("coche2",54.0,nodo1,nodo8,cr,(int)retraso);
			cr.addVehiculo(coche);
			
			while(!coche.getEstado().equals("eliminado") || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche.getEstado().equals("eliminado") && tiempo >= coche.getRetraso()){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				
				if(tiempo == 15.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo1","ronda4s",115.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo1","ronda4sb",112.5); 
				}else if(tiempo == 18.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo1","ronda4s",145.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo2_5","ronda4sb",150.0); 
				}else if(tiempo == 19.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_5","ronda4s",150.0);//rojo
					tituloPrueba+=comprobarPosicion(posicion2,"nodo2_5","ronda4sb",150.0);//rojo
				}else if(tiempo == 26.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_5","ronda4s",150.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo2_2","ficticio4e",6.0);
				}else if(tiempo == 28.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_2","ficticio4eb",6.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo2_4","ronda3s",10.0);//verde
				}else if(tiempo == 30.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_4","ficticio3s",6.0);//ambar
					tituloPrueba+=comprobarPosicion(posicion2,"nodo2_4","ronda3s",37.5);
				}else if(tiempo == 37.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_4","ronda3s",2.5); //verde
					tituloPrueba+=comprobarPosicion(posicion2,"nodo2_4","ronda3s",142.5);
				}else if(tiempo == 48.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_4","ronda3s",105.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_3","ronda3s",300.0);
				}else if(tiempo == 49.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_4","ronda3s",115.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_3","ronda3s",300.0); //rojo
				}else if(tiempo == 55.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_4","ronda3s",175.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_3","ficticio12s",2.5); //verde
				}else if(tiempo == 58.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo2_4","ronda3s",205.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo7_4","ronda2s",10.0); //verde
				}else if(tiempo == 63.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo8");
				}else if(tiempo == 78.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo8");
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoSemaforo3(){ //muchos coches esperando en un semaforo para llenar arcos con coches esperando
		String tituloPrueba = "testRecorridoVehiculoSemaforo3";
		double tiempo = 1.0;	
		double retraso = 2.0;
		double diferencia = retraso - tiempo;	
		Posicion posicion = new Posicion(); Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion(); Posicion posicion4 = new Posicion();
		Posicion posicion5 = new Posicion(); Posicion posicion6 = new Posicion();
		Posicion posicion7 = new Posicion(); Posicion posicion8 = new Posicion();
		Posicion posicion9 = new Posicion(); Posicion posicion10 = new Posicion();
		Posicion posicion11 = new Posicion(); Posicion posicion12 = new Posicion();
		Posicion posicion13 = new Posicion(); Posicion posicion14 = new Posicion();
		Posicion posicion15 = new Posicion(); Posicion posicion16 = new Posicion();
		Posicion posicion17 = new Posicion(); Posicion posicion18 = new Posicion();
		Posicion posicion19 = new Posicion(); Posicion posicion20 = new Posicion();
		
		Vehiculo coche3, coche4, coche5, coche6, coche7, coche8, coche9, coche10, coche11, 
				 coche12, coche13, coche14, coche15, coche16, coche17, coche18, coche19, coche20;
		
		try{
			
			coche = new Vehiculo("coche",36.0,nodo9_4,nodo7_2,cr,0); coche2 = new Vehiculo("coche2",54.0,nodo9_4,nodo7_2,cr,(int)retraso);
			coche3 = new Vehiculo("coche3",54.0,nodo9_4,nodo7_2,cr,(int)retraso+1); coche4 = new Vehiculo("coche4",36.0,nodo9_4,nodo7_2,cr,(int)retraso+2);
			coche5 = new Vehiculo("coche5",36.0,nodo9_4,nodo7_2,cr,(int)retraso+3); coche6 = new Vehiculo("coche6",54.0,nodo9_4,nodo7_2,cr,(int)retraso+4);
			coche7 = new Vehiculo("coche7",54.0,nodo9_4,nodo7_2,cr,(int)retraso+5); coche8 = new Vehiculo("coche8",36.0,nodo9_4,nodo7_2,cr,(int)retraso+6);
			coche9 = new Vehiculo("coche9",36.0,nodo9_4,nodo7_2,cr,(int)retraso+7); coche10 = new Vehiculo("coche10",54.0,nodo9_4,nodo7_2,cr,(int)retraso+8);
			coche11 = new Vehiculo("coche11",54.0,nodo9_4,nodo7_2,cr,(int)retraso+9); coche12 = new Vehiculo("coche12",36.0,nodo9_4,nodo7_2,cr,(int)retraso+10);
			coche13 = new Vehiculo("coche13",36.0,nodo9_4,nodo7_2,cr,(int)retraso+11); coche14 = new Vehiculo("coche14",54.0,nodo9_4,nodo7_2,cr,(int)retraso+12);
			coche15 = new Vehiculo("coche15",54.0,nodo9_4,nodo7_2,cr,(int)retraso+13); coche16 = new Vehiculo("coche16",36.0,nodo9_4,nodo7_2,cr,(int)retraso+14);
			coche17 = new Vehiculo("coche17",36.0,nodo9_4,nodo7_2,cr,(int)retraso+15); coche18 = new Vehiculo("coche18",54.0,nodo9_4,nodo7_2,cr,(int)retraso+16);
			coche19 = new Vehiculo("coche19",54.0,nodo9_4,nodo7_2,cr,(int)retraso+17); coche20 = new Vehiculo("coche20",36.0,nodo9_4,nodo7_2,cr,(int)retraso+18);
			
			cr.addVehiculo(coche); cr.addVehiculo(coche2); cr.addVehiculo(coche3); cr.addVehiculo(coche4);
			cr.addVehiculo(coche5); cr.addVehiculo(coche6); cr.addVehiculo(coche7); cr.addVehiculo(coche8);
			cr.addVehiculo(coche9); cr.addVehiculo(coche10); cr.addVehiculo(coche11); cr.addVehiculo(coche12);
			cr.addVehiculo(coche13); cr.addVehiculo(coche14); cr.addVehiculo(coche15); cr.addVehiculo(coche16);
			cr.addVehiculo(coche17); cr.addVehiculo(coche18); cr.addVehiculo(coche19); cr.addVehiculo(coche20);
			
			//para la prueba modificamos semaforo7_1
			semaforo7_1.setTRojo(22); semaforo7_1.setTVerde(10);
			
			while(!coche.getEstado().equals("eliminado")  || !coche2.getEstado().equals("eliminado") ||
				  !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado") ||
				  !coche5.getEstado().equals("eliminado") || !coche6.getEstado().equals("eliminado") ||
				  !coche7.getEstado().equals("eliminado")  || !coche8.getEstado().equals("eliminado") ||
				  !coche9.getEstado().equals("eliminado")  || !coche10.getEstado().equals("eliminado") ||
				  !coche11.getEstado().equals("eliminado")  || !coche12.getEstado().equals("eliminado") ||
				  !coche13.getEstado().equals("eliminado")  || !coche14.getEstado().equals("eliminado") ||
				  !coche15.getEstado().equals("eliminado")  || !coche16.getEstado().equals("eliminado") ||
				  !coche17.getEstado().equals("eliminado")  || !coche18.getEstado().equals("eliminado") ||
				  !coche19.getEstado().equals("eliminado")  || !coche20.getEstado().equals("eliminado")){
				
				cr.operacionesDeTiempo(tiempo);
				
				if(!coche.getEstado().equals("eliminado")){
					coche.actualizarPosicion(tiempo); posicion = coche.determinarPosicion(); coche.showPosicion(tiempo);
				}if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia); posicion2 = coche2.determinarPosicion(); coche2.showPosicion(tiempo);
				}if(!coche3.getEstado().equals("eliminado") && tiempo >= coche3.getRetraso()){
					coche3.actualizarPosicion(tiempo - diferencia - 1); posicion3 = coche3.determinarPosicion(); coche3.showPosicion(tiempo);
				}if(!coche4.getEstado().equals("eliminado") && tiempo >= coche4.getRetraso()){
					coche4.actualizarPosicion(tiempo - diferencia - 2); posicion4 = coche4.determinarPosicion(); coche4.showPosicion(tiempo);
				}if(!coche5.getEstado().equals("eliminado") && tiempo >= coche5.getRetraso()){
					coche5.actualizarPosicion(tiempo - diferencia - 3); posicion5 = coche5.determinarPosicion(); coche5.showPosicion(tiempo);
				}if(!coche6.getEstado().equals("eliminado") && tiempo >= coche6.getRetraso()){
					coche6.actualizarPosicion(tiempo - diferencia - 4); posicion6 = coche6.determinarPosicion(); coche6.showPosicion(tiempo);
				}if(!coche7.getEstado().equals("eliminado") && tiempo >= coche7.getRetraso()){
					coche7.actualizarPosicion(tiempo - diferencia - 5); posicion7 = coche7.determinarPosicion(); coche7.showPosicion(tiempo);
				}if(!coche8.getEstado().equals("eliminado") && tiempo >= coche8.getRetraso()){
					coche8.actualizarPosicion(tiempo - diferencia - 6); posicion8 = coche8.determinarPosicion(); coche8.showPosicion(tiempo);
				}if(!coche9.getEstado().equals("eliminado") && tiempo >= coche9.getRetraso()){
					coche9.actualizarPosicion(tiempo - diferencia - 7); posicion9 = coche9.determinarPosicion(); coche9.showPosicion(tiempo);
				}if(!coche10.getEstado().equals("eliminado") && tiempo >= coche10.getRetraso()){
					coche10.actualizarPosicion(tiempo - diferencia - 8); posicion10 = coche10.determinarPosicion(); coche10.showPosicion(tiempo);
				}if(!coche11.getEstado().equals("eliminado") && tiempo >= coche11.getRetraso()){	
					coche11.actualizarPosicion(tiempo - diferencia - 9); posicion11 = coche11.determinarPosicion(); coche11.showPosicion(tiempo);
				}if(!coche12.getEstado().equals("eliminado") && tiempo >= coche12.getRetraso()){	
					coche12.actualizarPosicion(tiempo - diferencia - 10); posicion12 = coche12.determinarPosicion(); coche12.showPosicion(tiempo);
				}if(!coche13.getEstado().equals("eliminado") && tiempo >= coche13.getRetraso()){
					coche13.actualizarPosicion(tiempo - diferencia - 11); posicion13 = coche13.determinarPosicion(); coche13.showPosicion(tiempo);
				}if(!coche14.getEstado().equals("eliminado") && tiempo >= coche14.getRetraso()){
					coche14.actualizarPosicion(tiempo - diferencia - 12); posicion14 = coche14.determinarPosicion(); coche14.showPosicion(tiempo);
				}if(!coche15.getEstado().equals("eliminado") && tiempo >= coche15.getRetraso()){
					coche15.actualizarPosicion(tiempo - diferencia - 13); posicion15 = coche15.determinarPosicion(); coche15.showPosicion(tiempo);
				}if(!coche16.getEstado().equals("eliminado") && tiempo >= coche16.getRetraso()){
					coche16.actualizarPosicion(tiempo - diferencia - 14); posicion16 = coche16.determinarPosicion(); coche16.showPosicion(tiempo);
				}if(!coche17.getEstado().equals("eliminado") && tiempo >= coche17.getRetraso()){
					coche17.actualizarPosicion(tiempo - diferencia - 15); posicion17 = coche17.determinarPosicion(); coche17.showPosicion(tiempo);
				}if(!coche18.getEstado().equals("eliminado") && tiempo >= coche18.getRetraso()){
					coche18.actualizarPosicion(tiempo - diferencia - 16); posicion18 = coche18.determinarPosicion(); coche18.showPosicion(tiempo);
				}if(!coche19.getEstado().equals("eliminado") && tiempo >= coche19.getRetraso()){
					coche19.actualizarPosicion(tiempo - diferencia - 17); posicion19 = coche19.determinarPosicion(); coche19.showPosicion(tiempo);
				}if(!coche20.getEstado().equals("eliminado") && tiempo >= coche20.getRetraso()){
					coche20.actualizarPosicion(tiempo - diferencia - 18); posicion20 = coche20.determinarPosicion(); coche20.showPosicion(tiempo);
				}
				
				if(tiempo == 20.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_1","avdaMancha",100.0);//semaforo en rojo
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","avdaMancha",94.0);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo6","avdaMancha",88.0);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo6","avdaMancha",82.0);
					tituloPrueba+=comprobarPosicion(posicion5,"nodo6","avdaMancha",76.0);
					tituloPrueba+=comprobarPosicion(posicion6,"nodo6","avdaMancha",70.0);
					tituloPrueba+=comprobarPosicion(posicion7,"nodo6","avdaMancha",64.0);
					tituloPrueba+=comprobarPosicion(posicion8,"nodo6","avdaMancha",58.0);
					tituloPrueba+=comprobarPosicion(posicion9,"nodo6","avdaMancha",52.0);
					tituloPrueba+=comprobarPosicion(posicion10,"nodo6","avdaMancha",46.0);
					tituloPrueba+=comprobarPosicion(posicion11,"nodo6","avdaMancha",40.0);
					tituloPrueba+=comprobarPosicion(posicion12,"nodo6","avdaMancha",20.0);
					tituloPrueba+=comprobarPosicion(posicion13,"nodo6","tinte2",20.0);
				}else if(tiempo == 24.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_1","avdaMancha",100.0);//semaforo en rojo
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","avdaMancha",94.0);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo6","avdaMancha",88.0);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo6","avdaMancha",82.0);
					tituloPrueba+=comprobarPosicion(posicion5,"nodo6","avdaMancha",76.0);
					tituloPrueba+=comprobarPosicion(posicion6,"nodo6","avdaMancha",70.0);
					tituloPrueba+=comprobarPosicion(posicion7,"nodo6","avdaMancha",64.0);
					tituloPrueba+=comprobarPosicion(posicion8,"nodo6","avdaMancha",58.0);
					tituloPrueba+=comprobarPosicion(posicion9,"nodo6","avdaMancha",52.0);
					tituloPrueba+=comprobarPosicion(posicion10,"nodo6","avdaMancha",46.0);
					tituloPrueba+=comprobarPosicion(posicion11,"nodo6","avdaMancha",40.0);
					tituloPrueba+=comprobarPosicion(posicion12,"nodo6","avdaMancha",34.0);
					tituloPrueba+=comprobarPosicion(posicion13,"nodo6","avdaMancha",28.0);
					tituloPrueba+=comprobarPosicion(posicion14,"nodo6","avdaMancha",22.0);
					tituloPrueba+=comprobarPosicion(posicion15,"nodo6","avdaMancha",16.0);
					tituloPrueba+=comprobarPosicion(posicion16,"nodo6","tinte2",20.0);
					tituloPrueba+=comprobarPosicion(posicion17,"nodo9_4","tinte2",14.0);
				}else if(tiempo == 38.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo7_1","ficticio9",2.5);//semaforo en verde
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","avdaMancha",96.5);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo6","avdaMancha",90.5);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo6","avdaMancha",84.5);
					tituloPrueba+=comprobarPosicion(posicion5,"nodo6","avdaMancha",78.5);
					tituloPrueba+=comprobarPosicion(posicion6,"nodo6","avdaMancha",72.5);
					tituloPrueba+=comprobarPosicion(posicion7,"nodo6","avdaMancha",66.5);
					tituloPrueba+=comprobarPosicion(posicion8,"nodo6","avdaMancha",60.5);
					tituloPrueba+=comprobarPosicion(posicion9,"nodo6","avdaMancha",54.5);
					tituloPrueba+=comprobarPosicion(posicion10,"nodo6","avdaMancha",48.5);
					tituloPrueba+=comprobarPosicion(posicion12,"nodo6","avdaMancha",36.5);
					tituloPrueba+=comprobarPosicion(posicion13,"nodo6","avdaMancha",30.5);
					tituloPrueba+=comprobarPosicion(posicion14,"nodo6","avdaMancha",24.5);
					tituloPrueba+=comprobarPosicion(posicion15,"nodo6","avdaMancha",18.5);
					tituloPrueba+=comprobarPosicion(posicion16,"nodo6","avdaMancha",12.5);
					tituloPrueba+=comprobarPosicion(posicion17,"nodo6","avdaMancha",2.5);
					tituloPrueba+=comprobarPosicion(posicion18,"nodo9_4","tinte2",16.5);
					tituloPrueba+=comprobarPosicion(posicion19,"nodo9_4","tinte2",10.5);
					tituloPrueba+=comprobarPosicion(posicion20,"nodo9_4","tinte2",2.5);	
				}else if(tiempo == 196.0){
					tituloPrueba+=comprobarPosicion(posicion20,"nodo7_2","ficticio9",6.0);
				}
				tiempo += 1.0;
				//Thread.sleep(500); //0,5 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}

	public String testRecorridoVehiculoGlorieta1(){ //Dos vehiculos circulando por la glorieta, uno con preferencia
		String tituloPrueba = "testRecorridoVehiculoGlorieta1";
		double tiempo = 1.0;
		double retraso = 6.0;
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		
		try{
			coche = new Vehiculo("coche",54.0,nodo8,nodo5,cr,0);
			coche2 = new Vehiculo("coche2",54.0,nodo13,nodo5,cr,(int)retraso);
			cr.addVehiculo(coche);
			cr.addVehiculo(coche2);
			
			while(!coche.getEstado().equals("eliminado")  || !coche2.getEstado().equals("eliminado")){
				cr.operacionesDeTiempo(tiempo);
				if(!coche2.getEstado().equals("eliminado")  && tiempo >= coche2.getRetraso()){	
					coche2.actualizarPosicion(tiempo - diferencia);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				if(!coche.getEstado().equals("eliminado")){
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
								
				if(tiempo == 13.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo8","reySanto3",150.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_3","ficticio5",15.0);//coche2 llega antes al nodo
				}else if(tiempo == 14.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_3","reySanto3",150.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_4","ficticio6",15.0);//coche2 va delante
				}else if(tiempo == 15.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_3","ficticio6",2.5);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_4","tinte2",15.0);
				}else if(tiempo == 17.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_4","ficticio6",15.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo6","tinte3",15.0);
				}else if(tiempo == 19.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo5");
				}else if(tiempo == 22.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo5");
				}
				tiempo += 1.0;
				//Thread.sleep(250); //0,25 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	
	public String testRecorridoVehiculoGlorieta2(){ //6 vehiculos circulando por la glorieta (por los mismos nodos con el fin de llenar los arcos y ver preferencias)
		String tituloPrueba = "testRecorridoVehiculoGlorieta2";
		double tiempo = 1.0;
		double retraso = 2.0;
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion();
		Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion();
		Posicion posicion4 = new Posicion();
		Posicion posicion5 = new Posicion();
		Posicion posicion6 = new Posicion();
		
		Vehiculo coche3, coche4, coche5, coche6;
		
		try{
			
			coche = new Vehiculo("coche",9.0,nodo13,nodo9_1,cr,0);
			coche2 = new Vehiculo("coche2",9.0,nodo13,nodo9_1,cr,(int)retraso);
			coche3 = new Vehiculo("coche3",9.0,nodo13,nodo9_1,cr,(int)retraso+1);
			coche4 = new Vehiculo("coche4",9.0,nodo13,nodo9_1,cr,(int)retraso+2);
			coche5 = new Vehiculo("coche5",9.0,nodo13,nodo9_1,cr,(int)retraso+3);
			coche6 = new Vehiculo("coche6",9.0,nodo13,nodo9_1,cr,(int)retraso+4);
			
			cr.addVehiculo(coche); cr.addVehiculo(coche2); cr.addVehiculo(coche3);
			cr.addVehiculo(coche4); cr.addVehiculo(coche5); cr.addVehiculo(coche6);
			
			while(!coche.getEstado().equals("eliminado")  || !coche2.getEstado().equals("eliminado") ||
				  !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado") ||
				  !coche5.getEstado().equals("eliminado") || !coche6.getEstado().equals("eliminado")){
				
				cr.operacionesDeTiempo(tiempo);
				
				if(!coche.getEstado().equals("eliminado")){	
					coche.actualizarPosicion(tiempo);
					posicion = coche.determinarPosicion();
					coche.showPosicion(tiempo);
				}
				if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia);
					posicion2 = coche2.determinarPosicion();
					coche2.showPosicion(tiempo);
				}
				if(!coche3.getEstado().equals("eliminado") && tiempo >= coche3.getRetraso()){
					coche3.actualizarPosicion(tiempo - diferencia - 1);
					posicion3 = coche3.determinarPosicion();
					coche3.showPosicion(tiempo);
				}
				if(!coche4.getEstado().equals("eliminado") && tiempo >= coche4.getRetraso()){
					coche4.actualizarPosicion(tiempo - diferencia - 23);
					posicion4 = coche4.determinarPosicion();
					coche4.showPosicion(tiempo);
				}
				if(!coche5.getEstado().equals("eliminado") && tiempo >= coche5.getRetraso()){
					coche5.actualizarPosicion(tiempo - diferencia - 3);
					posicion5 = coche5.determinarPosicion();
					coche5.showPosicion(tiempo);
				}
				if(!coche6.getEstado().equals("eliminado") && tiempo >= coche6.getRetraso()){
					coche6.actualizarPosicion(tiempo - diferencia - 4);
					posicion6 = coche6.determinarPosicion();
					coche6.showPosicion(tiempo);
				}
									
				if(tiempo == 24.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_2","tinte1",60.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo13","tinte1",54.0);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo13","tinte1",48.0);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo13","tinte1",42.0);
					tituloPrueba+=comprobarPosicion(posicion5,"nodo13","tinte1",36.0);
					tituloPrueba+=comprobarPosicion(posicion6,"nodo13","tinte1",30.0);
				}else if(tiempo == 30.0){//no hay esperas porque no coinciden el maximo de coches en el imagenes.arco
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_3","ficticio5",15.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_2","ficticio5",7.5);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo9_2","tinte1",60.0);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo13","tinte1",54.0);
					tituloPrueba+=comprobarPosicion(posicion5,"nodo13","tinte1",48.0);
					tituloPrueba+=comprobarPosicion(posicion6,"nodo13","tinte1",42.0);
				}else if(tiempo == 42.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo9_1","ficticio7",15.0);
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_4","ficticio7",7.5);
					tituloPrueba+=comprobarPosicion(posicion3,"nodo9_4","ficticio6",15.0);
					tituloPrueba+=comprobarPosicion(posicion4,"nodo9_3","ficticio6",7.5);
					tituloPrueba+=comprobarPosicion(posicion5,"nodo9_3","ficticio5",15.0);
					tituloPrueba+=comprobarPosicion(posicion6,"nodo9_2","ficticio5",7.5);
				}else if(tiempo == 45.0){
					tituloPrueba+=comprobarPosicion(posicion2,"nodo9_1");
				}else if(tiempo == 48.0){
					tituloPrueba+=comprobarPosicion(posicion3,"nodo9_1");
				}else if(tiempo == 51.0){
					tituloPrueba+=comprobarPosicion(posicion4,"nodo9_1");
				}else if(tiempo == 54.0){
					tituloPrueba+=comprobarPosicion(posicion5,"nodo9_1");
				}else if(tiempo == 57.0){
					tituloPrueba+=comprobarPosicion(posicion6,"nodo9_1");
				}
				tiempo += 1.0;
				//Thread.sleep(250); //0,25 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	
	public String testRecorridoVehiculoGeneral(){ //10 vehiculos circulando por la ciudad
		//mirar las colas de entrada a los nodos, los cambios de carril
		String tituloPrueba = "testRecorridoVehiculoGeneral";
		double tiempo = 1.0;
		Posicion posicion = new Posicion(); Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion(); Posicion posicion4 = new Posicion();
		Posicion posicion5 = new Posicion(); Posicion posicion6 = new Posicion();
		Posicion posicion7 = new Posicion(); Posicion posicion8 = new Posicion();
		Posicion posicion9 = new Posicion(); Posicion posicion10 = new Posicion();

		Vehiculo coche3, coche4, coche5, coche6, coche7, coche8, coche9, coche10; 
				
		try{
			
			coche = new Vehiculo("coche",36.0,nodo1,nodo12,cr,0); coche2 = new Vehiculo("coche2",54.0,nodo1,nodo12,cr,0);
			coche3 = new Vehiculo("coche3",36.0,nodo5,nodo2_3,cr,0);	coche4 = new Vehiculo("coche4",54.0,nodo5,nodo2_3,cr,0);
			coche5 = new Vehiculo("coche5",36.0,nodo8,nodo12,cr,0);	coche6 = new Vehiculo("coche6",54.0,nodo8,nodo12,cr,0);
			coche7 = new Vehiculo("coche7",36.0,nodo13,nodo10,cr,0); coche8 = new Vehiculo("coche8",54.0,nodo13,nodo10,cr,0);
			coche9 = new Vehiculo("coche9",36.0,nodo8,nodo13,cr,0);	coche10 = new Vehiculo("coche10",54.0,nodo8,nodo13,cr,0);	
			
			cr.addVehiculo(coche); cr.addVehiculo(coche2); cr.addVehiculo(coche3); cr.addVehiculo(coche4);
			cr.addVehiculo(coche5); cr.addVehiculo(coche6); cr.addVehiculo(coche7); cr.addVehiculo(coche8);
			cr.addVehiculo(coche9); cr.addVehiculo(coche10);
			
			while(!coche.getEstado().equals("eliminado")  || !coche2.getEstado().equals("eliminado") ||
				  !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado") ||
				  !coche5.getEstado().equals("eliminado") || !coche6.getEstado().equals("eliminado") ||
				  !coche7.getEstado().equals("eliminado")  || !coche8.getEstado().equals("eliminado") ||
				  !coche9.getEstado().equals("eliminado")  || !coche10.getEstado().equals("eliminado")){
				
				cr.operacionesDeTiempo(tiempo);
				
				if(!coche.getEstado().equals("eliminado")){
					coche.actualizarPosicion(tiempo); posicion = coche.determinarPosicion(); coche.showPosicion(tiempo);
				}if(!coche2.getEstado().equals("eliminado")){
					coche2.actualizarPosicion(tiempo); posicion2 = coche2.determinarPosicion(); coche2.showPosicion(tiempo);
				}if(!coche3.getEstado().equals("eliminado")){
					coche3.actualizarPosicion(tiempo); posicion3 = coche3.determinarPosicion(); coche3.showPosicion(tiempo);
				}if(!coche4.getEstado().equals("eliminado")){
					coche4.actualizarPosicion(tiempo); posicion4 = coche4.determinarPosicion(); coche4.showPosicion(tiempo);
				}if(!coche5.getEstado().equals("eliminado")){
					coche5.actualizarPosicion(tiempo); posicion5 = coche5.determinarPosicion(); coche5.showPosicion(tiempo);
				}if(!coche6.getEstado().equals("eliminado")){
					coche6.actualizarPosicion(tiempo); posicion6 = coche6.determinarPosicion(); coche6.showPosicion(tiempo);
				}if(!coche7.getEstado().equals("eliminado")){
					coche7.actualizarPosicion(tiempo); posicion7 = coche7.determinarPosicion(); coche7.showPosicion(tiempo);
				}if(!coche8.getEstado().equals("eliminado")){
					coche8.actualizarPosicion(tiempo); posicion8 = coche8.determinarPosicion(); coche8.showPosicion(tiempo);
				}if(!coche9.getEstado().equals("eliminado")){
					coche9.actualizarPosicion(tiempo); posicion9 = coche9.determinarPosicion(); coche9.showPosicion(tiempo);
				}if(!coche10.getEstado().equals("eliminado")){
					coche10.actualizarPosicion(tiempo); posicion10 = coche10.determinarPosicion(); coche10.showPosicion(tiempo);
				}
				
				if(tiempo == 2.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo1","ronda4s",7.5);
				 	tituloPrueba+=comprobarPosicion(posicion2,"nodo1","ronda4sb",2.5); //cambia de carril al ir mas rapido
				 	tituloPrueba+=comprobarPosicion(posicion3,"nodo5","ciruela2",7.5);
				 	tituloPrueba+=comprobarPosicion(posicion5,"nodo8","ronda1s",7.5);
				 	tituloPrueba+=comprobarPosicion(posicion6,"nodo8","ronda1sb",2.5); //cambia de carril al ir mas rapido
				 	tituloPrueba+=comprobarPosicion(posicion7,"nodo13","tinte1",7.5);
				}else if(tiempo == 3.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo1","ronda4s",15.0);
				 	tituloPrueba+=comprobarPosicion(posicion2,"nodo1","ronda4sb",7.5);
				 	tituloPrueba+=comprobarPosicion(posicion3,"nodo5","ciruela2",15.0);
				 	tituloPrueba+=comprobarPosicion(posicion4,"nodo5","ciruela2",6.5);
				 	tituloPrueba+=comprobarPosicion(posicion5,"nodo8","ronda1s",15.0); 
				 	tituloPrueba+=comprobarPosicion(posicion6,"nodo8","ronda1sb",7.5); 
				 	tituloPrueba+=comprobarPosicion(posicion7,"nodo13","tinte1",15.0);
				 	tituloPrueba+=comprobarPosicion(posicion8,"nodo13","tinte1",6.5); 
				 	tituloPrueba+=comprobarPosicion(posicion9,"nodo8","ronda1s",2.5); //ahora puede entrar
				}else if(tiempo == 4.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo1","ronda4s",25.0);
				 	tituloPrueba+=comprobarPosicion(posicion2,"nodo1","ronda4sb",15.0);
				 	tituloPrueba+=comprobarPosicion(posicion3,"nodo5","ciruela2",25.0);
				 	tituloPrueba+=comprobarPosicion(posicion4,"nodo5","ciruela2",14.0);
				 	tituloPrueba+=comprobarPosicion(posicion5,"nodo8","ronda1s",25.0); 
				 	tituloPrueba+=comprobarPosicion(posicion6,"nodo8","ronda1sb",15.0); 
				 	tituloPrueba+=comprobarPosicion(posicion7,"nodo13","tinte1",25.0);
				 	tituloPrueba+=comprobarPosicion(posicion8,"nodo13","tinte1",14.0); 
				 	tituloPrueba+=comprobarPosicion(posicion9,"nodo8","ronda1s",7.5);
				 	tituloPrueba+=comprobarPosicion(posicion10,"nodo8","ronda1sb",2.5);
				}else if(tiempo == 6.0){
					tituloPrueba+=comprobarPosicion(posicion,"nodo1","ronda4s",45.0);
				 	tituloPrueba+=comprobarPosicion(posicion2,"nodo1","ronda4sb",37.5);
				 	tituloPrueba+=comprobarPosicion(posicion3,"nodo5","ciruela2",45.0);
				 	tituloPrueba+=comprobarPosicion(posicion4,"nodo5","ciruela2",36.5);
				 	tituloPrueba+=comprobarPosicion(posicion5,"nodo14","alarcos1",10.0);
				 	tituloPrueba+=comprobarPosicion(posicion6,"nodo14","ronda1sb",30.0); 
				 	tituloPrueba+=comprobarPosicion(posicion7,"nodo13","tinte1",45.0);
				 	tituloPrueba+=comprobarPosicion(posicion8,"nodo13","tinte1",36.5); 
				 	tituloPrueba+=comprobarPosicion(posicion9,"nodo8","ronda1s",25.0);
				 	tituloPrueba+=comprobarPosicion(posicion10,"nodo8","ronda1sb",15.0);
				}
				tiempo += 1.0;
				//Thread.sleep(250); //0,25 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoGeneral2(){ //20 vehiculos circulando por la ciudad
		String tituloPrueba = "testRecorridoVehiculoGeneral2";
		double tiempo = 1.0;
		double retraso = 2.0;
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion(); Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion(); Posicion posicion4 = new Posicion();
		Posicion posicion5 = new Posicion(); Posicion posicion6 = new Posicion();
		Posicion posicion7 = new Posicion(); Posicion posicion8 = new Posicion();
		Posicion posicion9 = new Posicion(); Posicion posicion10 = new Posicion();
		Posicion posicion11 = new Posicion(); Posicion posicion12 = new Posicion();
		Posicion posicion13 = new Posicion(); Posicion posicion14 = new Posicion();
		Posicion posicion15 = new Posicion(); Posicion posicion16 = new Posicion();
		Posicion posicion17 = new Posicion(); Posicion posicion18 = new Posicion();
		Posicion posicion19 = new Posicion(); Posicion posicion20 = new Posicion();
		
		Vehiculo coche3, coche4, coche5, coche6, coche7, coche8, coche9, coche10, coche11, 
				 coche12, coche13, coche14, coche15, coche16, coche17, coche18, coche19, coche20;
		
		try{
			
			coche = new Vehiculo("coche",36.0,nodo1,nodo12,cr,0); coche2 = new Vehiculo("coche2",54.0,nodo1,nodo12,cr,(int)retraso);
			coche3 = new Vehiculo("coche3",54.0,nodo4,nodo2_3,cr,0);	coche4 = new Vehiculo("coche4",36.0,nodo5,nodo12,cr,0);
			coche5 = new Vehiculo("coche5",36.0,nodo8,nodo12,cr,0);	coche6 = new Vehiculo("coche6",54.0,nodo8,nodo12,cr,(int)retraso);
			coche7 = new Vehiculo("coche7",54.0,nodo14,nodo2_3,cr,0); coche8 = new Vehiculo("coche8",36.0,nodo14,nodo2_3,cr,(int)retraso);
			coche9 = new Vehiculo("coche9",36.0,nodo6,nodo2_3,cr,0);	coche10 = new Vehiculo("coche10",54.0,nodo6,nodo2_3,cr,(int)retraso);
			coche11 = new Vehiculo("coche11",54.0,nodo13,nodo1,cr,0); coche12 = new Vehiculo("coche12",36.0,nodo13,nodo1,cr,1);
			coche13 = new Vehiculo("coche13",36.0,nodo13,nodo1,cr,(int)retraso+1); coche14 = new Vehiculo("coche14",54.0,nodo3,nodo12,cr,0);
			coche15 = new Vehiculo("coche15",54.0,nodo10,nodo6,cr,0); coche16 = new Vehiculo("coche16",36.0,nodo10,nodo6,cr,0);
			coche17 = new Vehiculo("coche17",36.0,nodo13,nodo11,cr,(int)retraso+2); coche18 = new Vehiculo("coche18",54.0,nodo13,nodo11,cr,(int)retraso+3);
			coche19 = new Vehiculo("coche19",54.0,nodo13,nodo7_5,cr,(int)retraso+4); coche20 = new Vehiculo("coche20",36.0,nodo13,nodo7_5,cr,(int)retraso+5);
			
			cr.addVehiculo(coche); cr.addVehiculo(coche2); cr.addVehiculo(coche3); cr.addVehiculo(coche4);
			cr.addVehiculo(coche5); cr.addVehiculo(coche6); cr.addVehiculo(coche7); cr.addVehiculo(coche8);
			cr.addVehiculo(coche9); cr.addVehiculo(coche10); cr.addVehiculo(coche11); cr.addVehiculo(coche12);
			cr.addVehiculo(coche13); cr.addVehiculo(coche14); cr.addVehiculo(coche15); cr.addVehiculo(coche16);
			cr.addVehiculo(coche17); cr.addVehiculo(coche18); cr.addVehiculo(coche19); cr.addVehiculo(coche20);
			
			while(!coche.getEstado().equals("eliminado")  || !coche2.getEstado().equals("eliminado") ||
				  !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado") ||
				  !coche5.getEstado().equals("eliminado") || !coche6.getEstado().equals("eliminado") ||
				  !coche7.getEstado().equals("eliminado")  || !coche8.getEstado().equals("eliminado") ||
				  !coche9.getEstado().equals("eliminado")  || !coche10.getEstado().equals("eliminado") ||
				  !coche11.getEstado().equals("eliminado")  || !coche12.getEstado().equals("eliminado") ||
				  !coche13.getEstado().equals("eliminado")  || !coche14.getEstado().equals("eliminado") ||
				  !coche15.getEstado().equals("eliminado")  || !coche16.getEstado().equals("eliminado") ||
				  !coche17.getEstado().equals("eliminado")  || !coche18.getEstado().equals("eliminado") ||
				  !coche19.getEstado().equals("eliminado")  || !coche20.getEstado().equals("eliminado")){
				
				cr.operacionesDeTiempo(tiempo);
				
				if(!coche12.getEstado().equals("eliminado") && tiempo >= coche12.getRetraso()){
					coche12.actualizarPosicion(tiempo - diferencia); posicion12 = coche12.determinarPosicion(); coche12.showPosicion(tiempo);
				}if(!coche16.getEstado().equals("eliminado") && tiempo >= coche16.getRetraso()){
					coche16.actualizarPosicion(tiempo); posicion16 = coche16.determinarPosicion(); coche16.showPosicion(tiempo);
				}if(!coche.getEstado().equals("eliminado")){
					coche.actualizarPosicion(tiempo); posicion = coche.determinarPosicion(); coche.showPosicion(tiempo);
				}if(!coche3.getEstado().equals("eliminado")){
					coche3.actualizarPosicion(tiempo); posicion3 = coche3.determinarPosicion(); coche3.showPosicion(tiempo);
				}if(!coche4.getEstado().equals("eliminado")){
					coche4.actualizarPosicion(tiempo); posicion4 = coche4.determinarPosicion(); coche4.showPosicion(tiempo);
				}if(!coche5.getEstado().equals("eliminado")){
					coche5.actualizarPosicion(tiempo); posicion5 = coche5.determinarPosicion(); coche5.showPosicion(tiempo);
				}if(!coche9.getEstado().equals("eliminado")){
					coche9.actualizarPosicion(tiempo); posicion9 = coche9.determinarPosicion(); coche9.showPosicion(tiempo);
				}if(!coche11.getEstado().equals("eliminado")){
					coche11.actualizarPosicion(tiempo); posicion11 = coche11.determinarPosicion(); coche11.showPosicion(tiempo);
				}if(!coche14.getEstado().equals("eliminado")){
					coche14.actualizarPosicion(tiempo); posicion14 = coche14.determinarPosicion(); coche14.showPosicion(tiempo);
				}if(!coche15.getEstado().equals("eliminado")){
					coche15.actualizarPosicion(tiempo); posicion15 = coche15.determinarPosicion(); coche15.showPosicion(tiempo);
				}if(!coche7.getEstado().equals("eliminado")){
					coche7.actualizarPosicion(tiempo); posicion7 = coche7.determinarPosicion(); coche7.showPosicion(tiempo);
				}if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia); posicion2 = coche2.determinarPosicion(); coche2.showPosicion(tiempo);
				}if(!coche6.getEstado().equals("eliminado") && tiempo >= coche6.getRetraso()){	
					coche6.actualizarPosicion(tiempo - diferencia); posicion6 = coche6.determinarPosicion(); coche6.showPosicion(tiempo);
				}if(!coche8.getEstado().equals("eliminado") && tiempo >= coche8.getRetraso()){	
					coche8.actualizarPosicion(tiempo - diferencia); posicion8 = coche8.determinarPosicion(); coche8.showPosicion(tiempo);
				}if(!coche10.getEstado().equals("eliminado") && tiempo >= coche10.getRetraso()){
					coche10.actualizarPosicion(tiempo - diferencia); posicion10 = coche10.determinarPosicion(); coche10.showPosicion(tiempo);
				}if(!coche13.getEstado().equals("eliminado") && tiempo >= coche13.getRetraso()){
					coche13.actualizarPosicion(tiempo - diferencia - 1); posicion13 = coche13.determinarPosicion(); coche13.showPosicion(tiempo);
				}if(!coche17.getEstado().equals("eliminado") && tiempo >= coche17.getRetraso()){
					coche17.actualizarPosicion(tiempo - diferencia - 2); posicion17 = coche17.determinarPosicion(); coche17.showPosicion(tiempo);
				}if(!coche18.getEstado().equals("eliminado") && tiempo >= coche18.getRetraso()){
					coche18.actualizarPosicion(tiempo - diferencia - 3); posicion18 = coche18.determinarPosicion(); coche18.showPosicion(tiempo);
				}if(!coche19.getEstado().equals("eliminado") && tiempo >= coche19.getRetraso()){
					coche19.actualizarPosicion(tiempo - diferencia - 4); posicion19 = coche19.determinarPosicion(); coche19.showPosicion(tiempo);
				}if(!coche20.getEstado().equals("eliminado") && tiempo >= coche20.getRetraso()){
					coche20.actualizarPosicion(tiempo - diferencia - 5); posicion20 = coche20.determinarPosicion(); coche20.showPosicion(tiempo);
				}					
							
				tiempo += 1.0;
				//Thread.sleep(250); //0,25 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testRecorridoVehiculoGeneral3(){ //40 vehiculos circulando por la ciudad
		String tituloPrueba = "testRecorridoVehiculoGeneral3";
		double tiempo = 1.0;
		double retraso = 2.0;
		double diferencia = retraso - tiempo;
		Posicion posicion = new Posicion(); Posicion posicion2 = new Posicion();
		Posicion posicion3 = new Posicion(); Posicion posicion4 = new Posicion();
		Posicion posicion5 = new Posicion(); Posicion posicion6 = new Posicion();
		Posicion posicion7 = new Posicion(); Posicion posicion8 = new Posicion();
		Posicion posicion9 = new Posicion(); Posicion posicion10 = new Posicion();
		Posicion posicion11 = new Posicion(); Posicion posicion12 = new Posicion();
		Posicion posicion13 = new Posicion(); Posicion posicion14 = new Posicion();
		Posicion posicion15 = new Posicion(); Posicion posicion16 = new Posicion();
		Posicion posicion17 = new Posicion(); Posicion posicion18 = new Posicion();
		Posicion posicion19 = new Posicion(); Posicion posicion20 = new Posicion();
		Posicion posicion21 = new Posicion(); Posicion posicion22 = new Posicion();
		Posicion posicion23 = new Posicion(); Posicion posicion24 = new Posicion();
		Posicion posicion25 = new Posicion(); Posicion posicion26 = new Posicion();
		Posicion posicion27 = new Posicion(); Posicion posicion28 = new Posicion();
		Posicion posicion29 = new Posicion(); Posicion posicion30 = new Posicion();
		Posicion posicion31 = new Posicion(); Posicion posicion32 = new Posicion();
		Posicion posicion33 = new Posicion(); Posicion posicion34 = new Posicion();
		Posicion posicion35 = new Posicion(); Posicion posicion36 = new Posicion();
		Posicion posicion37 = new Posicion(); Posicion posicion38 = new Posicion();
		Posicion posicion39 = new Posicion(); Posicion posicion40 = new Posicion();
		
		Vehiculo coche3, coche4, coche5, coche6, coche7, coche8, coche9, coche10, coche11, 
				 coche12, coche13, coche14, coche15, coche16, coche17, coche18, coche19, coche20,
				 coche21, coche22, coche23, coche24, coche25, coche26, coche27, coche28, coche29, 
				 coche30, coche31, coche32, coche33, coche34, coche35, coche36, coche37, coche38,
				 coche39, coche40;
		
		try{
			
			coche = new Vehiculo("coche",36.0,nodo1,nodo12,cr,0); coche2 = new Vehiculo("coche2",54.0,nodo1,nodo12,cr,(int)retraso);
			coche3 = new Vehiculo("coche3",54.0,nodo4,nodo2_3,cr,0); coche4 = new Vehiculo("coche4",36.0,nodo5,nodo12,cr,0);
			coche5 = new Vehiculo("coche5",36.0,nodo8,nodo12,cr,0);	coche6 = new Vehiculo("coche6",54.0,nodo8,nodo12,cr,(int)retraso);
			coche7 = new Vehiculo("coche7",54.0,nodo14,nodo2_3,cr,0); coche8 = new Vehiculo("coche8",36.0,nodo14,nodo2_3,cr,(int)retraso);
			coche9 = new Vehiculo("coche9",36.0,nodo6,nodo2_3,cr,0); coche10 = new Vehiculo("coche10",54.0,nodo6,nodo2_3,cr,(int)retraso);
			coche11 = new Vehiculo("coche11",54.0,nodo13,nodo1,cr,0); coche12 = new Vehiculo("coche12",36.0,nodo13,nodo1,cr,(int)retraso);
			coche13 = new Vehiculo("coche13",36.0,nodo13,nodo1,cr,(int)retraso+1); coche14 = new Vehiculo("coche14",54.0,nodo3,nodo12,cr,0);
			coche15 = new Vehiculo("coche15",54.0,nodo10,nodo6,cr,0); coche16 = new Vehiculo("coche16",36.0,nodo10,nodo6,cr,(int)retraso);
			coche17 = new Vehiculo("coche17",36.0,nodo13,nodo11,cr,(int)retraso+2); coche18 = new Vehiculo("coche18",54.0,nodo13,nodo11,cr,(int)retraso+3);
			coche19 = new Vehiculo("coche19",54.0,nodo13,nodo7_5,cr,(int)retraso+4); coche20 = new Vehiculo("coche20",36.0,nodo13,nodo7_5,cr,(int)retraso+5);
			coche21 = new Vehiculo("coche21",36.0,nodo1,nodo12,cr,(int)retraso+1); coche22 = new Vehiculo("coche22",54.0,nodo1,nodo12,cr,(int)retraso+2);
			coche23 = new Vehiculo("coche23",54.0,nodo4,nodo2_3,cr,(int)retraso+1); coche24 = new Vehiculo("coche24",36.0,nodo5,nodo12,cr,(int)retraso+1);
			coche25 = new Vehiculo("coche25",36.0,nodo8,nodo12,cr,(int)retraso+1); coche26 = new Vehiculo("coche26",54.0,nodo8,nodo12,cr,(int)retraso+2);
			coche27 = new Vehiculo("coche27",54.0,nodo14,nodo2_3,cr,(int)retraso+1); coche28 = new Vehiculo("coche28",36.0,nodo14,nodo2_3,cr,(int)retraso+2);
			coche29 = new Vehiculo("coche29",36.0,nodo6,nodo2_3,cr,(int)retraso+1); coche30 = new Vehiculo("coche30",54.0,nodo6,nodo2_3,cr,(int)retraso+2);
			coche31 = new Vehiculo("coche31",54.0,nodo13,nodo1,cr,(int)retraso+1); coche32 = new Vehiculo("coche32",36.0,nodo13,nodo1,cr,(int)retraso+2);
			coche33 = new Vehiculo("coche33",36.0,nodo13,nodo1,cr,(int)retraso+3); coche34 = new Vehiculo("coche34",54.0,nodo3,nodo12,cr,(int)retraso+1);
			coche35 = new Vehiculo("coche35",54.0,nodo10,nodo6,cr,(int)retraso+1); coche36 = new Vehiculo("coche36",36.0,nodo10,nodo6,cr,(int)retraso+2);
			coche37 = new Vehiculo("coche37",36.0,nodo13,nodo11,cr,(int)retraso+4); coche38 = new Vehiculo("coche38",54.0,nodo13,nodo11,cr,(int)retraso+5);
			coche39 = new Vehiculo("coche39",54.0,nodo13,nodo7_5,cr,(int)retraso+6); coche40 = new Vehiculo("coche40",36.0,nodo13,nodo7_5,cr,(int)retraso+7);
			
			cr.addVehiculo(coche); cr.addVehiculo(coche2); 
			cr.addVehiculo(coche3); cr.addVehiculo(coche4);
			cr.addVehiculo(coche5); cr.addVehiculo(coche6);
			cr.addVehiculo(coche7); cr.addVehiculo(coche8);
			cr.addVehiculo(coche9); cr.addVehiculo(coche10);
			cr.addVehiculo(coche11); cr.addVehiculo(coche12);
			cr.addVehiculo(coche13); cr.addVehiculo(coche14);
			cr.addVehiculo(coche15); cr.addVehiculo(coche16);
			cr.addVehiculo(coche17); cr.addVehiculo(coche18);
			cr.addVehiculo(coche19); cr.addVehiculo(coche20);
			cr.addVehiculo(coche21); cr.addVehiculo(coche22); 
			cr.addVehiculo(coche23); cr.addVehiculo(coche24);
			cr.addVehiculo(coche25); cr.addVehiculo(coche26);
			cr.addVehiculo(coche27); cr.addVehiculo(coche28);
			cr.addVehiculo(coche29); cr.addVehiculo(coche30);
			cr.addVehiculo(coche31); cr.addVehiculo(coche32);
			cr.addVehiculo(coche33); cr.addVehiculo(coche34);
			cr.addVehiculo(coche35); cr.addVehiculo(coche36);
			cr.addVehiculo(coche37); cr.addVehiculo(coche38);
			cr.addVehiculo(coche39); cr.addVehiculo(coche40);
			
			while(!coche.getEstado().equals("eliminado")  || !coche2.getEstado().equals("eliminado") ||
				  !coche3.getEstado().equals("eliminado") || !coche4.getEstado().equals("eliminado") ||
				  !coche5.getEstado().equals("eliminado") || !coche6.getEstado().equals("eliminado") ||
				  !coche7.getEstado().equals("eliminado")  || !coche8.getEstado().equals("eliminado") ||
				  !coche9.getEstado().equals("eliminado")  || !coche10.getEstado().equals("eliminado") ||
				  !coche11.getEstado().equals("eliminado")  || !coche12.getEstado().equals("eliminado") ||
				  !coche13.getEstado().equals("eliminado")  || !coche14.getEstado().equals("eliminado") ||
				  !coche15.getEstado().equals("eliminado")  || !coche16.getEstado().equals("eliminado") ||
				  !coche17.getEstado().equals("eliminado")  || !coche18.getEstado().equals("eliminado") ||
				  !coche19.getEstado().equals("eliminado")  || !coche20.getEstado().equals("eliminado") ||
				  !coche21.getEstado().equals("eliminado")  || !coche22.getEstado().equals("eliminado") ||
				  !coche23.getEstado().equals("eliminado") || !coche24.getEstado().equals("eliminado") ||
				  !coche25.getEstado().equals("eliminado") || !coche26.getEstado().equals("eliminado") ||
				  !coche27.getEstado().equals("eliminado")  || !coche28.getEstado().equals("eliminado") ||
				  !coche29.getEstado().equals("eliminado")  || !coche30.getEstado().equals("eliminado") ||
				  !coche31.getEstado().equals("eliminado")  || !coche32.getEstado().equals("eliminado") ||
				  !coche33.getEstado().equals("eliminado")  || !coche34.getEstado().equals("eliminado") ||
				  !coche35.getEstado().equals("eliminado")  || !coche36.getEstado().equals("eliminado") ||
				  !coche37.getEstado().equals("eliminado")  || !coche38.getEstado().equals("eliminado") ||
				  !coche39.getEstado().equals("eliminado")  || !coche40.getEstado().equals("eliminado")){
				
				cr.operacionesDeTiempo(tiempo);
				
				if(!coche.getEstado().equals("eliminado")){
					coche.actualizarPosicion(tiempo); posicion = coche.determinarPosicion(); coche.showPosicion(tiempo);
				}if(!coche3.getEstado().equals("eliminado")){
					coche3.actualizarPosicion(tiempo); posicion3 = coche3.determinarPosicion(); coche3.showPosicion(tiempo);
				}if(!coche4.getEstado().equals("eliminado")){
					coche4.actualizarPosicion(tiempo); posicion4 = coche4.determinarPosicion(); coche4.showPosicion(tiempo);
				}if(!coche5.getEstado().equals("eliminado")){
					coche5.actualizarPosicion(tiempo); posicion5 = coche5.determinarPosicion(); coche5.showPosicion(tiempo);
				}if(!coche7.getEstado().equals("eliminado")){
					coche7.actualizarPosicion(tiempo); posicion7 = coche7.determinarPosicion(); coche7.showPosicion(tiempo);
				}if(!coche9.getEstado().equals("eliminado")){
					coche9.actualizarPosicion(tiempo); posicion9 = coche9.determinarPosicion(); coche9.showPosicion(tiempo);
				}if(!coche11.getEstado().equals("eliminado")){
					coche11.actualizarPosicion(tiempo); posicion11 = coche11.determinarPosicion(); coche11.showPosicion(tiempo);
				}if(!coche14.getEstado().equals("eliminado")){
					coche14.actualizarPosicion(tiempo); posicion14 = coche14.determinarPosicion(); coche14.showPosicion(tiempo);
				}if(!coche15.getEstado().equals("eliminado")){
					coche15.actualizarPosicion(tiempo); posicion15 = coche15.determinarPosicion(); coche15.showPosicion(tiempo);
				}if(!coche2.getEstado().equals("eliminado") && tiempo >= coche2.getRetraso()){
					coche2.actualizarPosicion(tiempo - diferencia); posicion2 = coche2.determinarPosicion(); coche2.showPosicion(tiempo);
				}if(!coche6.getEstado().equals("eliminado") && tiempo >= coche6.getRetraso()){	
					coche6.actualizarPosicion(tiempo - diferencia); posicion6 = coche6.determinarPosicion(); coche6.showPosicion(tiempo);
				}if(!coche8.getEstado().equals("eliminado") && tiempo >= coche8.getRetraso()){	
					coche8.actualizarPosicion(tiempo - diferencia); posicion8 = coche8.determinarPosicion(); coche8.showPosicion(tiempo);
				}if(!coche10.getEstado().equals("eliminado") && tiempo >= coche10.getRetraso()){
					coche10.actualizarPosicion(tiempo - diferencia); posicion10 = coche10.determinarPosicion(); coche10.showPosicion(tiempo);
				}if(!coche12.getEstado().equals("eliminado") && tiempo >= coche12.getRetraso()){
					coche12.actualizarPosicion(tiempo - diferencia); posicion12 = coche12.determinarPosicion(); coche12.showPosicion(tiempo);
				}if(!coche16.getEstado().equals("eliminado") && tiempo >= coche16.getRetraso()){
					coche16.actualizarPosicion(tiempo - diferencia); posicion16 = coche16.determinarPosicion(); coche16.showPosicion(tiempo);
				}if(!coche13.getEstado().equals("eliminado") && tiempo >= coche13.getRetraso()){
					coche13.actualizarPosicion(tiempo - diferencia - 1); posicion13 = coche13.determinarPosicion(); coche13.showPosicion(tiempo);
				}if(!coche17.getEstado().equals("eliminado") && tiempo >= coche17.getRetraso()){
					coche17.actualizarPosicion(tiempo - diferencia - 2); posicion17 = coche17.determinarPosicion(); coche17.showPosicion(tiempo);
				}if(!coche18.getEstado().equals("eliminado") && tiempo >= coche18.getRetraso()){
					coche18.actualizarPosicion(tiempo - diferencia - 3); posicion18 = coche18.determinarPosicion(); coche18.showPosicion(tiempo);
				}if(!coche19.getEstado().equals("eliminado") && tiempo >= coche19.getRetraso()){
					coche19.actualizarPosicion(tiempo - diferencia - 4); posicion19 = coche19.determinarPosicion(); coche19.showPosicion(tiempo);
				}if(!coche20.getEstado().equals("eliminado") && tiempo >= coche20.getRetraso()){
					coche20.actualizarPosicion(tiempo - diferencia - 5); posicion20 = coche20.determinarPosicion(); coche20.showPosicion(tiempo);
				}if(!coche21.getEstado().equals("eliminado") && tiempo >= coche21.getRetraso()){
					coche21.actualizarPosicion(tiempo - diferencia - 1); posicion21 = coche21.determinarPosicion(); coche21.showPosicion(tiempo);
				}if(!coche23.getEstado().equals("eliminado") && tiempo >= coche23.getRetraso()){
					coche23.actualizarPosicion(tiempo - diferencia - 1); posicion23 = coche23.determinarPosicion(); coche23.showPosicion(tiempo);
				}if(!coche24.getEstado().equals("eliminado") && tiempo >= coche24.getRetraso()){
					coche24.actualizarPosicion(tiempo - diferencia - 1); posicion24 = coche24.determinarPosicion(); coche24.showPosicion(tiempo);
				}if(!coche25.getEstado().equals("eliminado") && tiempo >= coche25.getRetraso()){
					coche25.actualizarPosicion(tiempo - diferencia - 1); posicion25 = coche25.determinarPosicion(); coche25.showPosicion(tiempo);
				}if(!coche27.getEstado().equals("eliminado") && tiempo >= coche27.getRetraso()){
					coche27.actualizarPosicion(tiempo - diferencia - 1); posicion27 = coche27.determinarPosicion(); coche27.showPosicion(tiempo);
				}if(!coche29.getEstado().equals("eliminado") && tiempo >= coche29.getRetraso()){
					coche29.actualizarPosicion(tiempo - diferencia - 1); posicion29 = coche29.determinarPosicion(); coche29.showPosicion(tiempo);
				}if(!coche31.getEstado().equals("eliminado") && tiempo >= coche31.getRetraso()){
					coche31.actualizarPosicion(tiempo - diferencia - 1); posicion31 = coche31.determinarPosicion(); coche31.showPosicion(tiempo);
				}if(!coche34.getEstado().equals("eliminado") && tiempo >= coche34.getRetraso()){
					coche34.actualizarPosicion(tiempo - diferencia - 1); posicion34 = coche34.determinarPosicion(); coche34.showPosicion(tiempo);
				}if(!coche35.getEstado().equals("eliminado") && tiempo >= coche35.getRetraso()){
					coche35.actualizarPosicion(tiempo - diferencia - 1); posicion35 = coche35.determinarPosicion(); coche35.showPosicion(tiempo);
				}if(!coche22.getEstado().equals("eliminado") && tiempo >= coche22.getRetraso()){
					coche22.actualizarPosicion(tiempo - diferencia - 2); posicion22 = coche22.determinarPosicion(); coche22.showPosicion(tiempo);
				}if(!coche26.getEstado().equals("eliminado") && tiempo >= coche26.getRetraso()){	
					coche26.actualizarPosicion(tiempo - diferencia - 2); posicion26 = coche26.determinarPosicion(); coche26.showPosicion(tiempo);
				}if(!coche28.getEstado().equals("eliminado") && tiempo >= coche28.getRetraso()){	
					coche28.actualizarPosicion(tiempo - diferencia - 2); posicion28 = coche28.determinarPosicion(); coche28.showPosicion(tiempo);
				}if(!coche30.getEstado().equals("eliminado") && tiempo >= coche30.getRetraso()){
					coche30.actualizarPosicion(tiempo - diferencia - 2); posicion30 = coche30.determinarPosicion(); coche30.showPosicion(tiempo);
				}if(!coche32.getEstado().equals("eliminado") && tiempo >= coche32.getRetraso()){
					coche32.actualizarPosicion(tiempo - diferencia - 2); posicion32 = coche32.determinarPosicion(); coche32.showPosicion(tiempo);
				}if(!coche36.getEstado().equals("eliminado") && tiempo >= coche36.getRetraso()){
					coche36.actualizarPosicion(tiempo - diferencia - 2); posicion36 = coche36.determinarPosicion(); coche36.showPosicion(tiempo);
				}if(!coche33.getEstado().equals("eliminado") && tiempo >= coche33.getRetraso()){
					coche33.actualizarPosicion(tiempo - diferencia - 3); posicion33 = coche33.determinarPosicion(); coche33.showPosicion(tiempo);
				}if(!coche37.getEstado().equals("eliminado") && tiempo >= coche37.getRetraso()){
					coche37.actualizarPosicion(tiempo - diferencia - 4); posicion37 = coche37.determinarPosicion(); coche37.showPosicion(tiempo);
				}if(!coche38.getEstado().equals("eliminado") && tiempo >= coche38.getRetraso()){
					coche38.actualizarPosicion(tiempo - diferencia - 5); posicion38 = coche38.determinarPosicion(); coche38.showPosicion(tiempo);
				}if(!coche39.getEstado().equals("eliminado") && tiempo >= coche39.getRetraso()){
					coche39.actualizarPosicion(tiempo - diferencia - 6); posicion39 = coche39.determinarPosicion(); coche39.showPosicion(tiempo);
				}if(!coche40.getEstado().equals("eliminado") && tiempo >= coche40.getRetraso()){
					coche40.actualizarPosicion(tiempo - diferencia - 7); posicion40 = coche40.determinarPosicion(); coche40.showPosicion(tiempo);
				}					
				
				tiempo += 1.0;
				//Thread.sleep(250); //0,25 segundos
			}
			//salida.crearLog(tituloPrueba,fecha);
			//salida.crearInformeDeTiempos(tituloPrueba,cr,fecha);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en "+tituloPrueba+": "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	
	/**************** Otros m�todos de cobertura****************/
	
	//block coverage
	public String testVehiculo(){
		String tituloPrueba = "v | 10.0 m/s | origen: nodo1 | destino: nodo8 | retraso: 0 s";
		try{
			//probar la inicializacion del objeto
			Vehiculo v = new Vehiculo("v",36.0,nodo1,nodo8,cr,0);
			String cadena = "v | 10.0 m/s | origen: nodo1 | destino: nodo8 | retraso: 0 s";
			tituloPrueba+=(v.toString().equals(cadena));
			tituloPrueba+=(v.getDestino().getNombre().equals("nodo8"));
			
			//probar la modificacion del objeto
			v.setRetraso(10);
			tituloPrueba+=(v.getRetraso()==10);
			
			v.setRetraso(50);
			v.inicializar();
			tituloPrueba+=(v.getRetraso()==50);
			
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en testVehiculo: "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testArco(){	
		String tituloPrueba="testArco"; 
		try{
			//crear el acro
			Arco arco = new Arco("arco",1,150.0,"stop",false);
			
			//prueba de contruccion
			tituloPrueba+=(arco.getNombre().equals("arco"));
			tituloPrueba+=(arco.getNumCarriles() == 1);
			tituloPrueba+=(arco.getLongitud() == 150.0);
			tituloPrueba+=(arco.getRestriccion().equals("stop"));
			tituloPrueba+=(!arco.getSecundario());
			
			//modificacion
			arco.setNombre("otro");
			arco.setNumCarriles(2);
			arco.setLongitud(200.0);
			arco.setRestriccion("preferencia");
			arco.setSecundario(true);
			
			//prueba de modificacion
			tituloPrueba+=(arco.getNombre().equals("otro"));
			tituloPrueba+=(arco.getNumCarriles() == 2);
			tituloPrueba+=(arco.getLongitud() == 200.0);
			tituloPrueba+=(arco.getRestriccion().equals("preferencia"));
			tituloPrueba+=(arco.getSecundario());
			
			//prueba del metodo toString2()
			arco.setOrigen(new Nodo("nodo1"));
			arco.setDestino(new Nodo("nodo2"));
			
			String salida = "Arco:  otro\n";
			salida += "N�mero de carriles:  2\n";
			salida += "Longitud:  200.0 m\n";
			salida += "Nodo de Origen:  nodo1\n";
			salida += "Nodo de Destino:  nodo2";
			
			tituloPrueba+=(arco.toString2().equals(salida));
			
			//prueba del metodo inicializar()
			arco.inicializar();
			tituloPrueba+=(arco.getColaVehiculos().size() == 0);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en testArco: "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testArcoEspera(){
		String tituloPrueba = "testArcoEspera";
		try{
			//probar la creacion del objeto
			ArcoEspera ae = new ArcoEspera(new Vehiculo(), new Arco());
			tituloPrueba+=(ae.getTiempoEspera()==1.0);
			
			//probar la modificacion de este
			ae.incremetarTiempoEspera();
			tituloPrueba+=(ae.getTiempoEspera()==2.0);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en testArcoEspera: "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testCruce(){
		try{
			//probar la creacion del objeto
			Cruce cruce = new Cruce();
			return "cruce";
		}catch(Exception e){
			return ("Capturada excepi�n en testArcoEspera: "+e.getMessage());
		}
	}
	
	public String testSemaforo(){
		String tituloPrueba="testSemaforo";
		try{
			//probar la inicializacion del objeto
			Semaforo semaforo = new Semaforo("semaforo","verde",5.0,1.0,5.0,1.0);
			tituloPrueba+=(semaforo.getTVerde()==5.0);
			tituloPrueba+=(semaforo.getTAmbar()==1.0);
			tituloPrueba+=(semaforo.getTRojo()==5.0);
			
			//probar la modificacion del objeto
			semaforo.setTVerde(10.0);
			semaforo.setTAmbar(2.0);
			semaforo.setTRojo(10.0);
			tituloPrueba+=(semaforo.getTVerde()==10.0);
			tituloPrueba+=(semaforo.getTAmbar()==2.0);
			tituloPrueba+=(semaforo.getTRojo()==10.0);
			
			semaforo.setEstado("rojo");
			semaforo.inicializar(); // el estado debe ser ahora verde
			tituloPrueba+=(semaforo.getEstado().equals("verde"));
			
			semaforo = new Semaforo();
			tituloPrueba+=(semaforo.getEstado().equals("null"));
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en testSemaforo: "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testCiudad(){
		String tituloPrueba="testCiudad";
		try{
			coche = new Vehiculo("coche",36.0,nodo6,nodo3,cr,0);
			cr.addVehiculo(coche);
			//probar el metodo getListaVehiculos()
			tituloPrueba+=(((Vehiculo)cr.getListaVehiculos().elementAt(0)).equals(coche));
			
			//probar el metodo borrarNodo()
			cr.borrarNodo("nodo1");
			tituloPrueba+=(!cr.pertenece(nodo1));
			
			//probar el metodo borrarArco()
			tituloPrueba+=(!cr.pertenece(ronda4s));
			tituloPrueba+=(!cr.pertenece(ronda4e));
			
			//probar el metodo borrarTodosVehiculos()
			cr.borrarTodosVehiculos();
			tituloPrueba+=(cr.getListaVehiculos().size() == 0);
			
			//probar el metodo inicializarSalida()
			String salida1 = cr.getSalida().toString();
			cr.inicializarSalida();
			String salida2 = cr.getSalida().toString();
			tituloPrueba+=(!salida1.equals(salida2));
			tituloPrueba+=(cr.getSalida().getLogFinal().size() == 0);
			
			//probar que no hay camino minimo
			tituloPrueba+=(cr.caminoMinimo(nodo1,nodo1) == null);
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en testCiudad: "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testNodo(){
		String tituloPrueba="testNodo";
		try{
			//probar el metodo inicializar()
			String aux1 = nodo2_5.toString();
			nodo2_5.inicializar();
			String aux2 = nodo2_5.toString();
			tituloPrueba+=(aux1.equals(aux2));
			
			//probar el metodo toString2()
			coche = new Vehiculo("coche",36.0,nodo6,nodo3,cr,0);
			nodo2_1.addVehiculo(coche);
			String cadena = "Nodo (semaforo):  nodo2_1\nEstado:  rojo\n"+
							"Configuraci�n:  Tiempo en rojo = 5.0 s | Tiempo en �mbar = 1.0 s | Tiempo en verde = 5.0 s\n"+
							"Empieza en el segundo: 1.0\n"+
							"Lista de entradas:  ciruela1\nLista de salidas:  ficticio1\nLista de veh�culos: coche";
			
			tituloPrueba+=(cadena.equals(nodo2_1.toString2()));
			
			//probar el metodo borrarElemento
			tituloPrueba+=(nodo2_1.getElemento().getNombre().equals("semaforo2_1"));
			nodo2_1.borrarElemento();
			tituloPrueba+=(nodo2_1.getElemento() == null);
			
			//probar setNombre()
			nodo2_1.setNombre("prueba");
			tituloPrueba+=(nodo2_1.getNombre().equals("prueba"));
			
			//probar el metodo getOcupado()
			Nodo nodoPrueba = new Nodo();
			tituloPrueba+=(!nodoPrueba.getOcupado(coche,new Arco()));		
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en testNodo: "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	public String testUtilidades(){
		String tituloPrueba="testUtilidades";
		try{
			//probar el metodo estaNombreNodo()
			tituloPrueba+=(Utilidades.estaNombreNodo(cr.getListaNodos(),"nodo8"));
			
			//probar el metodo estaNombreArco()
			tituloPrueba+=(Utilidades.estaNombreArco(cr.getListaArcos(),"tinte1"));
			
			//probar el metodo estaNombre()
			coche = new Vehiculo("coche",36.0,nodo6,nodo3,cr,0);
			cr.addVehiculo(coche);
			tituloPrueba+=(Utilidades.estaNombreVehiculo(cr.getListaVehiculos(),"coche"));
			
			//probar getArco()
			tituloPrueba+=(Utilidades.getArco(cr.getListaArcos(),"arcoPrueba")==null); //no existe
			
			//probar getNodo()
			tituloPrueba+=(Utilidades.getNodo(cr.getListaNodos(),"nodoPrueba")==null); //no existe
			
			//probar getVehiculo()
			tituloPrueba+=(Utilidades.getVehiculo(cr.getListaVehiculos(),"vehiculoPrueba")==null); //no existe
			
			//probar el metodo sacarNombre()
			tituloPrueba+=(Utilidades.sacarNombre("F:\\prueba\\prueba\\nombre.txt").equals("nombre"));
			
			//probar el metodo getNombreArco()
			tituloPrueba+=(Utilidades.getNombreArco(cr.getListaArcos(),nodo14,nodo13).equals("alarcos1"));
			tituloPrueba+=(Utilidades.getNombreArco(cr.getListaArcos(),nodo13,nodo14).equals(""));//no existe arco
			
			//probar el metodo getNodoAleatorio()
			Vector auxiliar = Utilidades.getNodoAleatorio(cr,null,null);
			tituloPrueba+=(cr.getListaNodos().contains((Nodo)auxiliar.elementAt(0)));
			tituloPrueba+=(cr.getListaNodos().contains((Nodo)auxiliar.elementAt(1)));
			
			auxiliar = Utilidades.getNodoAleatorio(cr,null,nodo13);
			tituloPrueba+=(cr.existeCamino((Nodo)auxiliar.elementAt(0),nodo13));
			
			auxiliar = Utilidades.getNodoAleatorio(cr,nodo14,null);
			tituloPrueba+=(cr.existeCamino(nodo14,(Nodo)auxiliar.elementAt(0)));
			
			//probar el metodo getVelocidadAleatoria()
			double vel = Utilidades.getVelocidadAleatoria(20.0,30.0); 
			tituloPrueba+=((vel >= 20.0) && (vel <= 30.0));
			
			//probar el metodo getVelocidadAleatoria()
			int aleat = Utilidades.aleatorioRango(20,30); 
			tituloPrueba+=((aleat >= 20) && (aleat <= 30));
			
			//probar el metodo comprobarNombre()
			cr.addVehiculo(new Vehiculo("vAleatorio1",36.0,nodo14,nodo13,cr,0));
			int indice = Utilidades.comprobarNombre(cr.getListaVehiculos()); //el indice debe ser 1 por vAleatorio1
			tituloPrueba+=(indice == 1);			
		}catch(Exception e){
			tituloPrueba+=("Capturada excepi�n en testUtilidades: "+e.getMessage());
		}
		return tituloPrueba;
	}
	
	
	
	public static void main(String args[]) {
		MujavaCiudad m=new MujavaCiudad();
		m.setUp(); m.testArco();
		m.setUp(); m.testArcoEspera();
		m.setUp(); m.testCaminoMinimo();
		m.setUp(); m.testCiudad();
		m.setUp(); m.testCruce();
		m.setUp(); m.testExisteCamino();
		m.setUp(); m.testNodo();
		m.setUp(); m.testNoExisteCamino();
		m.setUp(); m.testOperacionesDeTiempoSemaforos();
		m.setUp(); m.testOperacionesDeTiempoSemaforos2();
		m.setUp(); m.testOperacionesDeTiempoSemaforos3();
		m.setUp(); m.testOperacionesDeTiempoSemaforos4();
		m.setUp(); m.testOperacionesDeTiempoSemaforos5();
		m.setUp(); m.testRecorridoVehiculoCruce();
		m.setUp(); m.testRecorridoVehiculoCruce2();
		m.setUp(); m.testRecorridoVehiculoCruce3();
		m.setUp(); m.testRecorridoVehiculoCruce4();
		m.setUp(); m.testRecorridoVehiculoCruce5();
		m.setUp(); m.testRecorridoVehiculoCruce6();
		m.setUp(); m.testRecorridoVehiculoCruce7();
		m.setUp(); m.testRecorridoVehiculoCruce8();
		m.setUp(); m.testRecorridoVehiculoCruce9();
		m.setUp(); m.testRecorridoVehiculoCruce10();
		m.setUp(); m.testRecorridoVehiculoCruce11();
		m.setUp(); m.testRecorridoVehiculoCruce12();
		m.setUp(); m.testRecorridoVehiculoCruce13();
		m.setUp(); m.testRecorridoVehiculoGeneral();
		m.setUp(); m.testRecorridoVehiculoGeneral2();
		m.setUp(); m.testRecorridoVehiculoGeneral3();
		m.setUp(); m.testRecorridoVehiculoGlorieta1();
		m.setUp(); m.testRecorridoVehiculoGlorieta2();
		m.setUp(); m.testRecorridoVehiculoSemaforo1();
		m.setUp(); m.testRecorridoVehiculoSemaforo2();
		m.setUp(); m.testRecorridoVehiculoSemaforo3();
		m.setUp(); m.testSemaforo();
		m.setUp(); m.testUtilidades();
		m.setUp(); m.testVehiculo();
	}
	
	/************** Metodos auxiliares *****************/
	
	public String comprobarPosicion(Posicion posicion, String nodo, String arco, double distancia){
		String tituloPrueba="";
		tituloPrueba+=(((Nodo)posicion.getNodoActual()).getNombre().equals(nodo));
		tituloPrueba+=(((Arco)posicion.getArcoActual()).getNombre().equals(arco));
		tituloPrueba+=(posicion.getDistanciaRecorrida() == distancia);
		return tituloPrueba;
	}
	
	public String comprobarPosicion(Posicion posicion, String nodo){
		String tituloPrueba="";
		tituloPrueba+=(((Nodo)posicion.getNodoActual()).getNombre().equals(nodo));
		return tituloPrueba;
	}
}