11.3

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.

11.3
Ich hab meinen Kellertester ein wenig umgeschrieben, sodass jetzt die Schlange getestet wird.
Wer also seine Schlange testen will => Ins Verzeichnis, wo die RingWarteschlange liegt speichern usw…

Hoffe es sind keine Fehler drin…

Attachment:
Testcase.java: https://fsi.cs.fau.de/unb-attachments/post_47606/Testcase.java


Supertoll!! (Soweit er gut testet ;))

War grad schon genervt, weil ich keinen machen wollte, da kam dein Post. Klasse Timing…

Woher nimmst du die Motivation so nen Megateil zu schreiben? Bin dir echt dankbar…


Klasse, vielen Dank.

Dein Testcase hat mich sogar auf einen kleinen “Fehler” bei mir aufmerksam gemacht. Ich kopier immer den gesamten Inhalt des Interfaces in eine neue Datei und implementier es dann dort. So habe ich gleich sämtl. Methoden inkl. Beschreibungen zur Hand. Soweit ja nichts tragisches, nur hatte ich die innere Klasse zur TooMuchEntriesException übernommen, und so warf ich praktischerweise gleich eine “RingWarteschlange.TooMuch …” statt “Schlange.TooMuch…”, welche denke ich eher erwartet wird.


Wenn du Eclipse benutzt, dann erstell doch einfach eine neue Klasse mit dem Klassen-erstell-Assistent und gehe da bei Interface auf “Add…”, wähle das zu implementierende aus (musst die ersten Buchstaben davon eingeben) und dann auf OK. Dan erstellt er dir eine neue Klasse mit den ganzen Methodenümpfen usw. Die Methodenbeschreibungen bekommst du dann angezeigt, wenn du mit der Maus über den jew. Methodennamen fährst.

@Holde: Ich musste am Montag noch meine Übungsaufgabe abgeben und hatte erst um 14:00 Vorlesung… und ich wollte nicht schon wieder vier-Gewinnt spielen (-;


Muss ich bei nächster Gelegenheit mal ausprobieren, dankeschön.


wow vielen dank für den testcase , alles bestanden :wink:


Kann es sein, dass die Zeilen 38 und 39 vertauscht werden müssen? Wenn ich zuerst MAX_VALUE und dann MIN_VALUE einfüge, kommt doch auch zuerst MAX_VALUE wieder raus, nich?
Bitte sagt mir, wenn ich falsch liege.

Grüße, Mo.


Ja, aber so steht es doch auch im Testcase?


Mysteriös, ich hatte es so:

Weiß der Geier warum…

Grüße, Mo.


LOL Marlik! N1… vielen Dank.
Alles beim ersten Test bestanden. =)
Wie lange sind den so eure Quellcodes? Meiner erscheint mir bissl kurz, deswegen bin ich trotzdem noch bisschen skeptisch. oO


top! danke an Marlik für den Testcase! Hab gleich beim ersten Anlauf bestanden :slight_smile:


Hab mir diesmal auch die Mühe gemacht, einen JUnit-Testcase zu schreiben. Viel Spaß damit. :slight_smile:

PS.: Mein Testcase erwartet, dass der Konstruktur bei negativen Argumenten eine IllegalArgumentException wirft. Wer das anders sieht, darf testMisc() wohlwollend ignorieren. :wink:

Attachment:
TestRingWarteschlange.java: https://fsi.cs.fau.de/unb-attachments/post_47641/TestRingWarteschlange.java


Wieso?


die IllegalArgumentException werf ich auch. Keine Ahnung warum, gefordert ist’s nicht, aber es sieht irgendwie hübscher aus.
@dnY: Mit Leerzeilen 52 Zeilen.

Problem
Hallo,

danke für die Testcases! Bis einschließlich Teil 2 funktioniert alles, aber dann bekomm ich die NoSuchElementException von front()…

Nur dass ich nicht komplett auf dem Holzweg bin: Habt ihr als Speicherplatz für den Puffer auch ein int-Array[groesse], sowie zwei Zeiger (kopf und ende) genommen? Wie könnte ich hierbei sinnvoll auf isEmpty überprüfen?

Danke!


size == 0


Hat sich das im Channel für dich geklärt? :slight_smile:

Hier gibts ein kleines Update vom Testcase, was noch den Fall size==0 abklopft:

Attachment:
TestWarteschlange.java: https://fsi.cs.fau.de/unb-attachments/post_47663/TestWarteschlange.java


Ich hatte (möglicherweise) das gleiche Problem. Bei mir ist das Array leer, wenn überall Nuller drinstehen, wobei ich mir nicht sicher bin, ob das so richtig ist :frowning: . Bei den Testcases von Marlik werden mit Math.random Zufallszahlen generiert und ins Array geschrieben, mit folgendem Code:

int tmp = (int) Math.random()*200;

Ich programmiere unter Windows und hier erzeugt er mir mit diesem Code nur Nuller (Weiß nicht, ob das unter Linux anders ist.)

Wenn man es folgendermaßen implementiert:

int tmp = (int) (Math.random()*200);

funktioniert es richtig.


Das sind auch 2 verschiedene Sachen:

  1. eine Auswahl zwischen 0 und ausschließlich 1 auf int gecastet gibt immer 0 und dann noch mal 200 bleibt 0.
    (cast hat eine der höchsten Prioritäten beim ausführen).

  2. Hier wird der cast erst nach dem multiplizieren gemacht.

Ein array mit nur 0er muss nicht zwingend leer sein.