# JUNIT-Test / abstrakte Datentypen / Queues / Assertionen uvm



## Sindbad1983 (19. Apr 2005)

Hi!

Da wartet wieder mal viel Arbeit auf mich!   :shock: 

Kennt sich jemand mit JUNIT aus?
Das wär mir eine große Hilfe!

Hier mal die Angabe, damit sich jeder (der will) einen Überblick verschaffen kann:


Abstrakter Datentyp (ADT) Prioritätswarteschlange:

Gesucht ist die Definition und Realisierung einer Warteschlange mit Priorität (PriorityQueue). Eine
solche Warteschlange soll Elemente gleichen Typs, unter Berücksichtigung einer Priorität aufnehmen
können. Es sollen dabei Elemente gleicher Priorität vorkommen können. Die Ordnung der Priorität in der
Warteschlange wird dabei durch ein Objekt vom Typ java.util.Comparator realisiert. Dieses
Objekt muss dem Konstruktor der Implementierungsklasse übergeben werden!


Teil 1: Definition des abstrakten Datentyps 
Jede PriorityQueue soll folgende Funktionalitäten zur Verfügung stellen:

java.util.Comparator getComparator( ) Gets the comparator object defining the priority rule

void insert(Object o) Inserts the object o into the queue respecting its priority defined by the
comparator object

boolean isEmpty() Returns true if this PriorityQueue contains no elements.

Object getFirst() throws NoMoreElementsException Returns the element in the queue with the highest priority which in turn is removed from the queue. Throws NoMoreElementsException if this PriorityQueue does not contain more elements.

PriorityIterator getPriorityIterator() Returns an PriorityIterator for all elements in the PriorityQueue.

Es soll möglich sein, alle Objekte in der Warteschange mit einer bestimmten Priorität zu durchlaufen. Es
wird erwartet, dass ein solcher PriorityIterator folgende Anforderungen bewältigen kann.

boolean hasNext() Returns true if this PriorityIterator has more elements when traversing the queue in the
forward direction.

Object next() throws NoMoreElementsException Returns the next element in the queue. Throws NoMoreElementsException if this PriorityQueue has no more elements.

Teil 2: Realisation des abstrakten Datentyps PriorityQueue

Realisieren Sie den die PriorityQueue durch eine passende konkrete Realisierung:

• eine konkrete Klasse, die PriorityQueue implementiert
• einen entsprechenden PriorityIterator
• einen Comparator zur Realisierung einer bestimmten Prioritätsordnung


Teil 3: Assertionen beim abstrakten Datentyps PriorityQueue

Fügen Sie bei allen Methoden sinnvolle Assertionen an und testen Sie, dass diese ausgelöst werden.

Teil 4: Testen des abstrakten Datentyps PriorityQueue

Testen Sie den ADT PriorityQueue unter Verwendung des JUnit-Frameworks. Zeigen Sie bei den
Testfällen, dass Ihre PriorityQueue:

• die angegebene Funktionalität fehlerfrei umsetzt
• insbesondere das Einfügen der Elemente nach der Prioritätsordnung funktioniert
• Die Exceptions richtig ausgelöst werden.


Hört sich nicht grad einfach an was?  :autsch: 

Ich werd mir mal JUNIT runterladen!  :bae: 

Gleich mal ne Frage bezüglich Priorität? Wie kann man sich das vorstellen?
Soll ich da die Priorität im Parameter übergeben?

ciao,Tommy


----------



## bygones (19. Apr 2005)

wenn du z.b. eclipse nutzt ist das JUnit Framework schon integriert.

unter priority queue musst du dir eine einfache Warteschlange vorstellen, in der die Element je nach der definierten Priorität geordnet sind. D.h. sie verläuft nicht unter dem Aspekt First in First out oder so, sondern je nach priorität.

ich denke im netz findest du  genügen impl. zu einer PQ - selber zu machen ist denk ich nicht ohne....


----------



## Bleiglanz (20. Apr 2005)

lies dir mal die Doku in der J2SE 5 durch, da ist sowas schon dabei (ggf. kannst du dir auch den Sourcecode downloaden)

Doug Leas altes concurrency Package wäre vielleicht auch ein guter Anfang:

http://g.oswego.edu/dl/cpj/


----------

