10.1 Testfälle

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

10.1 Testfälle

public class HashMapTest {
	public static void main (String[] args){
		ManualResizingHashMap<Integer,Integer> testHashMap = new ManualResizingHashMap<>(100);
		for(int i = 0; i < 500; i++){
			testHashMap.put(i,10);
		}

		for(int i = 0; i < 500; i++){
			assert testHashMap.contains(i): "should contains " + i;
		}

		for(int i = 0; i <500; i+=2){
			assert testHashMap.remove(i): "should remove " + i;
		}

		for(int i = 1; i < 500; i+=2){
			assert testHashMap.contains(i): "should contains " + i + " after remove";
		}

		for(int i = 0; i < 500; i+=2){
			assert !testHashMap.contains(i): "should be removed " + i;
		}

		testHashMap.resize(300);
		assert testHashMap.size() == 250: "wrong size";

		

	}
}

Warum hat man nachdem 500 Elemente hinzugefuegt wurden…

…und 250 wieder geloescht wurden…

…eine Groesse ungleich 250?


assert b; ergibt einen AssertionError falls die Bedingung b falsch ist.
Es wird also geprüft ob die size 250 ist und ansonsten die Fehlermeldung wrong size ausgegeben

Aufgabenstellung
“Mit Hilfe der Methode resize() kann die Anzahl der Buckets der Streutabelle erhöht werden”

Meines Wissens nach kannst du 300 nicht eingeben, da 300 kleiner als 500 ist und du somit das Array verkleinern würdest.

EDIT: Mein Fehler, die Größe ist ja 100, du gehst bloß bis 500 um das zu überprüfen. Soz :wink:


'Hallo alle zusammen ,

ich habe eine Frage , und zwar , wenn ich die Testfälle mit kleinem Zahl ausführe , dann funktioniert (terminated )
aber mit 500 terminated nicht , was konnte das Problem sein …

wenn jemand noch vor Weinachten mir helfen kann , wäre ganz nett :smiley:

Danke im Voraus …


funktioniert nur einer der testfälle mit den großen werten nicht oder alle ?


Bei mir läuft es in einer Endlosschleife bei 500, bei 100 terminiert es.


Liegt vielleicht an meiner Art der Rekursion, aber wenn ich in der While-Schleife, in der das Programm immer weiter nach nextEntries sucht (beim resizen) eine Ausgabe mache, dann kommen bei 500 auch nur 2 Ausgaben.


alle … ich habe versucht jeder Testfall allein auszuführen … hat auch nicht funktioniert


genau so bei mir … 100 terminated , aber 500 nicht


vielleicht sind eure methoden ziemlich ineffizient ? sodass sie ewig brauchen bei 500 elementen ?


Danke! Hat mir noch n paar kleine Fehler im Code gezeigt!

Ich hatte übrigens auch ne Endlosschleife bei n=500, da hat einfach ein “break;” in einer Schleife gefehlt…


Danke fuer den Test! :smiley:
Lief auch anstandslos durch.


Wenn bei euch Testfälle mit 100 Elementen funktionieren, aber 500 nicht, würde ich evtl. mal noch einen Blick auf euer Kollisions-Handling werfen. Die treten nämlich nur bei 500 Elementen auf (wenn man die Kapazität der HashMap nicht verändert). Evtl. liegt da die Endlosschleife versteckt.


Also bei mir laufen sowohl die internen Tests als auch die FSI-Tests fehlerfrei durch, aber beim hochladen im EST kommt dann ein rotes x “Submitted files don’t compile with test case”. Vorschläge?


vielleicht hast du verbotene ASCII zeichen drinn ? sowas wie ä, ö oder ü oder ähnliches ?


Ich hab grade gemerkt, dass ich die Assertions in der HashMapTest nicht aktiviert hatte, und jetzt kommt bei mir ein Fehler, und zwar, dass nach resize(300) meine size 50 ist statt 250. Ideen dazu?

EDIT: Fehler gefunden und behoben. Aber das rote X im EST bleibt bestehen