I. Knoten ---------- ---------- 1. Hinzufuegen eines Knotens (addnode) --------------------------------------- a) Hinzufuegen eines komplett neuen Knotens . funktioniert b) Hinzufuegen eines gleichnamigen Knotens mit anderem Typ . funktioniert c) Hinzufuegen eines bereits existierenden Knotens (Name und Typ gleich) . Fehlermeldung wird geworfen, Graph bleibt unveraendert d) Hinzufügen eines Knotens mit unbekanntem Typ . Fehlermeldung wird geworfen, Graph bleibt unveraendert 2. Loeschen eines Knotens (delnode) ------------------------------------ a) Loeschen eines existenten "losen" Knotens . funktioniert b) Loeschen eines existenten Knotens mit mindestens einer Kante . funktioniert c) Loeschen eines nicht-existenten Knotens . Fehlermeldung wird geworfen, Graph bleibt unveraendert 3. Verstecken von Knoten (hidenodes) ------------------------------------- a) Verstecken einer leeren Liste von Knoten . funktioniert (Graph bleibt unveraendert) b) Verstecken existenter Knoten ohne Kanten von/zu Knoten ausserhalb der Menge . funktioniert c) Verstecken existenter Knoten mit Kanten von/zu Knoten ausserhalb der Menge . funktioniert - nur rein in die Menge .funktioniert - nur raus .funktioniert - rein und raus .funktioniert Dadurch entstehend: - Ringverweise .funktioniert - doppelte Pfade (nur einfach darstellen) .funktioniert - Pfade, die mit bereits existenten Kanten uebereinstimmen (nur einfach darstellen) .funktioniert - Pfade, die aus Kanten mit verschiedenen Typen entstehen .funktioniert d) Verstecken von teilweise nicht-existenten Knoten . Fehlermeldung wird geworfen, Graph bleibt unveraendert e) Verstecken von teilweise bereits versteckten Knoten . Fehlermeldung wird geworfen, Graph bleibt unveraendert 4. Verstecken von Knoten eines Types (hidenodetype) ----------------------------------------------------- a) Verstecken eines existenten Knotentyps . funktioniert - in einem Graphen ohne Knoten dieses Typs .Fehlermeldung wird geworfen, Graph bleibt unveraendert - in einem Graphen mit Knoten dieses Typs .funktioniert b) Verstecken eines nicht-existenten Knotentyps . Fehlermeldung wird geworfen, Graph bleibt unveraendert 5. Abstrahieren von Knoten (abstractnodes) ------------------------------------------- Anmerkung: es werden keine Ringverweise von einem abstrakten Knoten auf sich selbst erzeugt a) Abstrahieren einer leeren Liste von Knoten . funktioniert b) Abstrahieren eines einzelnen Knotens . funktioniert c) Abstrahieren existenter Knoten ohne Kanten von/zu Knoten ausserhalb der Menge . funktioniert d) Abstrahieren existenter Knoten mit Kanten von/zu Knoten ausserhalb der Menge . funktioniert Dadurch entstehend: - doppelte Pfade (nur einfach darstellen) .funktioniert e) Abstrahieren von teilweise nicht-existenten Knoten . Fehlermeldung wird geworfen, Graph bleibt unveraendert f) Abstrahieren von teilweise bereits abstrahierten Knoten . Fehlermeldung wird geworfen, Graph bleibt unveraendert II. Kanten ----------- ----------- 1. Hinzufuegen einer Kante (addlink) ------------------------------------- a) Hinzufuegen einer neuen Kante zwischen zwei existenten Knoten . funktioniert b) Hinzufuegen einer Kante als Ringverweis auf einen existenten Knoten .funktioniert c) Hinzufuegen einer Kante zwischen zwei Knoten, von denen mindestens einer nicht existiert . Fehlermeldung wird geworfen, Graph bleibt unveraendert d) Hinzufuegen einer Kante anderen Typs zwischen den selben beiden Knoten wie eine bereits existente Kante mit gleicher Richtung . funktioniert e) Hinzufuegen einer Kante gleichen Typs zwischen den selben beiden Knoten wie eine bereits existende Kante mit anderer Richtung . funktioniert f) Hinzufuegen einer bereits existenten Kante (gleicher Typ, zwischen den gleichen Knoten, gleiche Richtung) . Fehlermeldung wird geworfen, Graph bleibt unveraendert g) Hinzufügen einer Kante mit unbekanntem Typ . Fehlermeldung wird geworfen, Graph bleibt unveraendert 2. Loeschen einer Kante (dellink) ---------------------------------- a) Loeschen einer existenten Kante . funktioniert b) Loeschen einer nicht-existenten Kante . Fehlermeldung wird geworfen, Graph bleibt unveraendert 3. Verstecken von Kanten (hideedges) ------------------------------------- a) Verstecken einer leeren Liste von Kanten . funktioniert (Graph bleibt unveraendert) b) Verstecken von existenten Kanten . funktioniert c) Verstecken von teilweise nicht-existenten Kanten . Fehlermeldung wird geworfen, Graph bleibt unveraendert d) Verstecken von teilweise bereits versteckten Kanten . Fehlermeldung wird geworfen, Graph bleibt unveraendert 4. Verstecken von Kanten eines Typs (hideedgetype) ---------------------------------------------------- a) Verstecken eines existenten Kantentyps . funktioniert - in einem Graphen ohne Kanten dieses Typs . Fehlermeldung wird geworfen, Graph bleibt unveraendert - in einem Graphen mit Kanten dieses Typs . funktioniert b) Verstecken eines nicht-existenten Kantentyps . Fehlermeldung wird geworfen, Graph bleibt unveraendert III. Rueckgaengigmachen eines Hideevents (showIt) -------------------------------------------------- -------------------------------------------------- 1. Rueckgaengigmachen eines bekannten Hideevents ------------------------------------------------- a) Rueckgaengigmachen von Knotenverstecken (-> hidenodes) . funktioniert b) Rueckgaengigmachen von Knotentypenverstecken (-> hidenodetypes) . funktioniert c) Rueckgaengigmachen von Knotenabstrahieren (-> abstractnodes) . funktioniert d) Rueckgaengigmachen von Kantenverstecken (-> hideedges) . funktioniert e) Rueckgaengigmachen von Kantentypenverstecken (-> hideedgetypes) . funktioniert 2. Rueckgaengigmachen eines bereits rueckgaengiggemachten Hideevents --------------------------------------------------------------------- . Fehlermeldung wird geworfen, Graph bleibt unveraendert 3. Rueckgaengigmachen eines unbekannten Hideevents --------------------------------------------------- . Fehlermeldung wird geworfen, Graph bleibt unveraendert 4. Rueckgaengigmachen in anderer Reihenfolge als umgekehrt zum Verstecken -------------------------------------------------------------------------- a) Rueckgaengigmachen von unabhaengigen Ereignissen . funktioniert b) Rueckgaengigmachen von Ereignissen, die sich ueberschneiden . Fehlermeldung wird geworfen, Graph bleibt unveraendert