@Test
public void testNeighbourhoodFast() throws Exception {

	long test = 0;
	boolean fehler;
	Config.fastestPathMode = true;
	
	/*
	 * Test 1 - Nullpointer als Graph - erwarte Fehler/Exception
	 */
	/*
	Dijkstra.H = 2;
	fehler = false;
	try {
		test = Dijkstra.neighbourhood(null, 1, true);
	} catch (Exception e) {
		fehler =true;
	}
	
	if (fehler == false)
		fail("Test 1: Einen Nullpointer zu uebergeben hat keine Exception geworfen");
	*/
	
	/*
	 * Test 2 - illegale Node-ID - nutze dazu test3
	 */
	
	fehler = false;
	try{
		test = Dijkstra.neighbourhood(test3, 55,(byte)0, true);
	}catch(Exception e) {
		fehler = true;
	}
	if (fehler == false){
		fail("Test 2: Bei Eingabe einer ungueltigen Node-ID wurde keine Exception geworfen");
	}
	
	/*
	 * Test 3 - nutze test3 - erwarte fuer Startknoten 2 Ausgabe -1
	 */
	
	test = Dijkstra.neighbourhood(test3, 2, (byte)0,true);
	if (test != -1)
		fail("Test 3: Die vorwaerts-scuhe auf einem isolierten Knoten liefert nicht -1 sondern: "+test);
	
	/*
	 * Test 4 - nutze test3 - erwarte fuer Startknoten 2 Ausgabe -1
	 */
	
	test = Dijkstra.neighbourhood(test3, 2,(byte)0, false);
	if (test != -1)
		fail("Test 4: Die ruekwaerts-scuhe auf einem isolierten Knoten liefert nicht -1 sondern: "+test);
	
	/*
	 * Test 5 - nutze test5 - es existieren Kanten, aber wieder soll -1 ausgegben werden
	 */
	
	test = Dijkstra.neighbourhood(test5, 5, (byte)0,true);
	if (test != -1)
		fail("Test 5: Die vorwaerts-scuhe auf einem isolierten Knoten bzql. ausgehender Knoten liefert nicht -1 sondern: "+test);
	
	
	/*
	 * Test 6 - nutze test5 - es existieren Kanten, aber wieder soll -1 ausgegben werden
	 */
	
	test = Dijkstra.neighbourhood(test5, 2, (byte)0,false);
	if (test != -1)
		fail("Test 6: Die rueck.-scuhe auf einem isolierten Knoten bzql. eingehender Knoten liefert nicht -1 sondern: "+test);
	
	
	/*
	 * Test 7 - uebergebe einen leeren Graphen - erwarte auch hier -1
	 */
	fehler = false;
	
	try{
		test = Dijkstra.neighbourhood(new HierarchyMapGraph(), 5, (byte)0,true);
	}catch(Exception e){
		fehler = true;
	}
	if (fehler == false)
		fail("Test 7: Der leere Graph liefert nicht -1 sondern: "+test);
	
	
	/*
	 * Test 8 - nutze test8 - es existiert ein Zykel - evtl. bringt dieser den Algo durcheinander - erwarte 10
	 */
		/*
	Dijkstra.H = 2;		
	test = Dijkstra.neighbourhood(test8, 1, true);
	if (test != 10)
		fail("Test 8: Der Graph mit trivialem Zykel liefert nicht 10 sondern: "+test);
		*/
	
	/*
	 * testGraph1 - teste korrekte Werte
	 */
	Config.H = 2;
	test = Dijkstra.neighbourhood(testGraph1, 1,(byte)0, true);
	if (test!= 1*Config.getSpeedFactor(StreetType.MOTORWAY))
		fail("TestGraph1: Der Algo liefert nicht "+1*Config.getSpeedFactor(StreetType.MOTORWAY)*10000+" sondern: "+test);
	
	
	/*
	 * testGraph2 - teste korrekte Werte
	 */
	Config.H = 2;
	test = Dijkstra.neighbourhood(testGraph2, 1,(byte)0, true);
	if (test!= 2*Config.getSpeedFactor(StreetType.MOTORWAY))
		fail("TestGraph2: Der Algo liefert nicht "+2*Config.getSpeedFactor(StreetType.MOTORWAY)*10000+" sondern: "+test);
	
	Config.H = 4;
	test = Dijkstra.neighbourhood(testGraph2, 1, (byte)0,true);
	if (test!= 3*Config.getSpeedFactor(StreetType.MOTORWAY))
		fail("TestGraph2: Der Algo liefert nicht "+3*Config.getSpeedFactor(StreetType.MOTORWAY)*10000+" sondern: "+test);
	
	Config.H = 5;
	test = Dijkstra.neighbourhood(testGraph2, 1,(byte)0, true);
	if (test!= 10*Config.getSpeedFactor(StreetType.MOTORWAY))
		fail("TestGraph2: Der Algo liefert nicht "+10*Config.getSpeedFactor(StreetType.MOTORWAY)*10000+" sondern: "+test);
	
	
	Config.H = 6;
	test = Dijkstra.neighbourhood(testGraph2, 1, (byte)0,true);
	if (test != -1)
		fail("TestGraph2: Der Algo liefert nicht -1 sondern: "+test);
	
	
	/*
	 * testGraph3 - teste korrekte Werte
	 */
	Config.H = 3;
	test = Dijkstra.neighbourhood(testGraph3, 1, (byte)0,true);
	if (test!= 1000*Config.getSpeedFactor(StreetType.MOTORWAY))
		fail("TestGraph3: Der Algo liefert nicht "+1000*Config.getSpeedFactor(StreetType.MOTORWAY)*10000+" sondern: "+test);
	
	Config.H = 4;
	test = Dijkstra.neighbourhood(testGraph3, 1, (byte)0,true);
	if (test != -1)
		fail("TestGraph3: Der Algo liefert nicht -1 sondern: "+test);
	
	
	/*
	 * testGraph4 - teste korrekte Werte (nciht-trivialer Zykel, keine Dreiecksungleichung)
	 */
	
	Config.H = 2;
	test = Dijkstra.neighbourhood(testGraph4, 1,(byte)0, true);
	if (test!= 2*Config.getSpeedFactor(StreetType.MOTORWAY))
		fail("TestGraph4: Der Algo liefert nicht "+2*Config.getSpeedFactor(StreetType.MOTORWAY)*10000+" sondern: "+test);
	
	Config.H = 3;
	test = Dijkstra.neighbourhood(testGraph4, 1,(byte)0, true);
	if (test!= 3*Config.getSpeedFactor(StreetType.MOTORWAY))
		fail("TestGraph4: Der Algo liefert nicht "+3*Config.getSpeedFactor(StreetType.MOTORWAY)*10000+" sondern: "+test);
	
	Config.H = 4;
	test = Dijkstra.neighbourhood(testGraph4, 1, (byte)0,true);
	if (test != -1)
		fail("TestGraph4: Der Algo liefert nicht -1 sondern: "+test+" evtl. Knoten doppelt begangen?");
	
	
	/*
	 * testGraph4 - teste korrekte Werte (nciht-trivialer Zykel, keine Dreiecksungleichung) fuer rueckwaerts
	 */
	
	Config.H = 2;
	test = Dijkstra.neighbourhood(testGraph4, 2, (byte)0,false);
	if (test!= 1*Config.getSpeedFactor(StreetType.MOTORWAY))
		fail("TestGraph4: Der Algo(false) liefert nicht 1 sondern: "+test);
	
	Config.H = 3;
	test = Dijkstra.neighbourhood(testGraph4, 2,(byte)0, false);
	if (test != -1)
		fail("TestGraph4: Der Algo(false) liefert nicht -1 sondern: "+test);
	
	Config.H = 4;
	test = Dijkstra.neighbourhood(testGraph4, 2,(byte)0, false);
	if (test != -1)
		fail("TestGraph4: Der Algo(false) liefert nicht -1 sondern: "+test+" evtl. Knoten doppelt begangen?");
}