@Test
  public void canAddElementNegativ() {
    List<IdLink> listLinks = new ArrayList<IdLink>();
    List<OptionVoraussetzung> listOpVor = new ArrayList<OptionVoraussetzung>();

    // Erzeugen eines Talents:
    // Talent A:
    Talent talentA = createTalent("Voraussetzung");
    Voraussetzung vorausA = new Voraussetzung();
    talentA.setVoraussetzung(vorausA);
    IdLink linkA = new IdLink(null, talentA, null, 3, null);

    // 1. NICHT talent1 auf Wert 5 oder mehr
    listLinks.add(new IdLink(talentA, talent1, null, 5, null));
    OptionVoraussetzung optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    vorausA.setNegVoraussetzung(listOpVor);

    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent1, 5);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent1, 4);
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent1, 6);
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 2. talent1 NICHT auf Wert 5+ und talent2 NICHT auf Wert 6+ => talent1 nicht erfüllt
    listLinks.add(new IdLink(talentA, talent2, null, 6, null));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 3. talent1 NICHT auf Wert 5+ und talent2 NICHT auf Wert 6+ => Beide nicht erfüllt
    prozessorTalent.updateWert(linkTalent2, 6);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 4. talent2 NICHT auf Wert 6+ => Nicht erfüllt
    prozessorTalent.updateWert(linkTalent1, 4);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 5. Beide erfüllt
    prozessorTalent.updateWert(linkTalent2, 5);
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    // 6. Beide erfüllt
    prozessorTalent.updateWert(linkTalent1, 1);
    prozessorTalent.updateWert(linkTalent2, 1);
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    // 7.  talent1 NICHT auf Wert 5+ => Nicht erfüllt
    listLinks.add(new IdLink(talentA, talent1, null, 5, null));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
  }
  /** Ein Maximum ist durch eine Voraussetzung angegeben */
  @Test
  public void canChangeMaxWert() {
    List<IdLink> listLinks = new ArrayList<IdLink>();
    List<OptionVoraussetzung> listOpVor = new ArrayList<OptionVoraussetzung>();

    // Talent A:
    Talent talentA = createTalent("Update-Test A");
    Voraussetzung vorausA = new Voraussetzung();
    talentA.setVoraussetzung(vorausA);
    IdLink linkA = new IdLink(null, talentA, null, 3, null);

    // Talent A: Benötigt talent1 mit Wert KLEINER als 5
    listLinks.add(new IdLink(talentA, talent1, null, 5, null));
    OptionVoraussetzung optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    vorausA.setNegVoraussetzung(listOpVor);

    // 1. TalentA kann nicht hinzugefügt werden, da talent1 weniger als 5
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    // 2. TalentA kann nicht hinzugefügt werden, da talent1 auf 7
    this.prozessorTalent.updateWert(this.prozessorTalent.getElementBox().getObjectById(talent1), 7);
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 3. TalentA kann hinzugefügt werden, da talent1 genau 4
    this.prozessorTalent.updateWert(this.prozessorTalent.getElementBox().getObjectById(talent1), 4);
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    this.prozessorTalent.addNewElement(talentA);

    // 3. Nach oben normal, aber nach unten eine Grenze von 5
    assertEquals(
        5,
        voraussAdmin.changeMaxWert(
            10, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertEquals(
        3,
        voraussAdmin.changeMinWert(3, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    assertEquals(
        0,
        voraussAdmin.changeMaxWert(0, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertEquals(
        4,
        voraussAdmin.changeMaxWert(4, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertEquals(
        5,
        voraussAdmin.changeMaxWert(5, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertEquals(
        5,
        voraussAdmin.changeMaxWert(6, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertEquals(
        5,
        voraussAdmin.changeMaxWert(7, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 4. wieder entfernen,
    this.prozessorTalent.removeElement(this.prozessorTalent.getElementBox().getObjectById(talentA));

    assertEquals(
        10,
        voraussAdmin.changeMaxWert(
            10, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertEquals(
        3,
        voraussAdmin.changeMinWert(3, this.prozessorTalent.getElementBox().getObjectById(talent1)));
  }
  /** Abhängigkeiten von einem Element zu einem andere mit Zweitziel. */
  @Test
  public void canUpdateZweitziel() {
    List<IdLink> listLinks = new ArrayList<IdLink>();
    List<OptionVoraussetzung> listOpVor = new ArrayList<OptionVoraussetzung>();

    // Vorteil A:
    Vorteil vorteilA = new Vorteil();
    vorteilA.setId("VOR-test-A");
    vorteilA.setMinStufe(1);
    vorteilA.setMaxStufe(10);
    vorteilA.setKostenProStufe(1.0d);

    Voraussetzung vorausA = new Voraussetzung();
    vorteilA.setVoraussetzung(vorausA);
    IdLink linkA = new IdLink(null, vorteilA, null, 3, null);

    // Vorteil A: Benötigt vorteil1 mit Zweitziel "talent1"
    listLinks.add(new IdLink(vorteilA, vorteil1, talent1, Link.KEIN_WERT, null));
    OptionVoraussetzung optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    vorausA.setPosVoraussetzung(listOpVor);

    // 1. TalentA kann nicht hinzugefügt werden, da das Zweitziel fehlt
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 2. Talent1 kann entfernt werden
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorVorteil.getElementBox().getObjectById(vorteil1)));
    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorVorteil.getElementBox().getObjectById(vorteil1)));

    // 3. Talent1 kann Zweitziel geupdated werden
    assertFalse(
        voraussAdmin.changeCanUpdateZweitZiel(
            false, this.prozessorVorteil.getElementBox().getObjectById(vorteil1), vorteil1));
    assertTrue(
        voraussAdmin.changeCanUpdateZweitZiel(
            true, this.prozessorVorteil.getElementBox().getObjectById(vorteil1), vorteil1));

    // 4. Talent1 auf richtigen Text ändern nun kann TalentA hinzugefügt werden
    prozessorVorteil.updateZweitZiel(
        this.prozessorVorteil.getElementBox().getObjectById(vorteil1), talent1);

    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    this.prozessorVorteil.addNewElement(vorteilA);

    // 5. Talent1 kann nicht mehr entfernt werden, wird als voraussetzung für TalentA benötigt
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorVorteil.getElementBox().getObjectById(vorteil1)));
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorVorteil.getElementBox().getObjectById(vorteil1)));

    // 6. Talent1 kann nicht mehr geupdated werden
    assertFalse(
        voraussAdmin.changeCanUpdateText(
            false, this.prozessorVorteil.getElementBox().getObjectById(vorteil1)));
    assertFalse(
        voraussAdmin.changeCanUpdateText(
            true, this.prozessorVorteil.getElementBox().getObjectById(vorteil1)));

    // 7. TalentA entfernen, Talent 1 kann wieder geupdated und entfernd werden
    this.prozessorVorteil.removeElement(
        this.prozessorVorteil.getElementBox().getObjectById(vorteilA));

    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorVorteil.getElementBox().getObjectById(vorteil1)));
    assertTrue(
        voraussAdmin.changeCanUpdateText(
            true, this.prozessorVorteil.getElementBox().getObjectById(vorteil1)));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    // 8. Talent 1 Text ändern, TalentA könnte nicht mehr hinzugefügt werden
    this.prozessorVorteil.updateZweitZiel(
        this.prozessorVorteil.getElementBox().getObjectById(vorteil1), talent2);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
  }
  /** Abhängigkeiten von einem Element zu einem andere mit Text-Wert. */
  @Test
  public void canUpdateText() {
    List<IdLink> listLinks = new ArrayList<IdLink>();
    List<OptionVoraussetzung> listOpVor = new ArrayList<OptionVoraussetzung>();

    // Talent A:
    Talent talentA = createTalent("Update-Test A");
    Voraussetzung vorausA = new Voraussetzung();
    talentA.setVoraussetzung(vorausA);
    IdLink linkA = new IdLink(null, talentA, null, 3, null);

    // Talent A: Benötigt talent1 mit Wert "Test XXX"
    listLinks.add(new IdLink(talentA, talent1, null, Link.KEIN_WERT, "Test XXX"));
    OptionVoraussetzung optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    vorausA.setPosVoraussetzung(listOpVor);

    // 1. TalentA kann nicht hinzugefügt werden, da der Text fehlt
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 2. Talent1 kann entfernt werden
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 3. Talent1 kann Text geupdated werden
    assertFalse(
        voraussAdmin.changeCanUpdateText(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanUpdateText(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 4. Talent1 auf richtigen Text ändern nun kann TalentA hinzugefügt werden
    prozessorTalent.updateText(
        this.prozessorTalent.getElementBox().getObjectById(talent1), "Test XXX");

    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    this.prozessorTalent.addNewElement(talentA);

    // 5. Talent1 kann nicht mehr entfernt werden, wird als voraussetzung für TalentA benötigt
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 6. Talent1 kann nicht mehr geupdated werden
    assertFalse(
        voraussAdmin.changeCanUpdateText(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertFalse(
        voraussAdmin.changeCanUpdateText(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 7. TalentA entfernen, Talent 1 kann wieder geupdated und entfernd werden
    this.prozessorTalent.removeElement(this.prozessorTalent.getElementBox().getObjectById(talentA));

    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanUpdateText(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    // 8. Talent 1 Text ändern, TalentA könnte nicht mehr hinzugefügt werden
    this.prozessorTalent.updateText(
        this.prozessorTalent.getElementBox().getObjectById(talent1), null);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
  }
  /** Ist es möglich ein Element zu entfernen? */
  @Test
  public void canRemoveElement() {
    List<IdLink> listLinks = new ArrayList<IdLink>();
    List<OptionVoraussetzung> listOpVor = new ArrayList<OptionVoraussetzung>();

    // Erzeugen eines Talents:
    // Talent A:
    Talent talentA = createTalent("Voraussetzung");
    Voraussetzung vorausA = new Voraussetzung();
    talentA.setVoraussetzung(vorausA);
    IdLink linkA = new IdLink(null, talentA, null, 3, null);

    // Talent A: Benötigt talent1
    listLinks.add(new IdLink(talentA, talent1, null, Link.KEIN_WERT, null));
    OptionVoraussetzung optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    vorausA.setPosVoraussetzung(listOpVor);

    // 1. Talent1 kann entfernd werden, da keine abhängigkeiten
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 2. Talent A hinzufügen, jetzt kann talent1 NICHT mehr entfernd werden
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.addNewElement(talentA);

    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // 3. Talent A entfernt, jetzt kann talent1 wieder entfernd werden
    prozessorTalent.removeElement(prozessorTalent.getElementBox().getObjectById(talentA));

    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            false, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));

    // Talent A: Benötigt talent1 und talent 2
    listLinks.add(new IdLink(talentA, talent2, null, Link.KEIN_WERT, null));

    // Talent A wieder drin, Talent 1 kann entfernt werden, weil talent 2 noch verfügbar
    prozessorTalent.addNewElement(talentA);

    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent2)));

    // Benötigt talent1 ODER talent 2
    optVor.setAnzahl(1); // Einer wird benötigt

    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent1)));
    assertTrue(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent2)));

    // Talent 1 entfernen, jetzt kann talent 2 nicht mehr entfernd werden wegen Talent A
    prozessorTalent.removeElement(prozessorTalent.getElementBox().getObjectById(talent1));

    assertFalse(
        voraussAdmin.changeCanRemoveElement(
            true, this.prozessorTalent.getElementBox().getObjectById(talent2)));
  }
  /** Kann etwas hinzugefügt werden, dass mit anderen Elementen nicht eineinbar ist? */
  @Test
  public void canAddUnvereinbaresElement() {
    List<IdLink> listLinks = new ArrayList<IdLink>();
    List<OptionVoraussetzung> listOpVor = new ArrayList<OptionVoraussetzung>();

    // Erzeugen eines Talents:
    // Talent A:
    Talent talentA = createTalent("Voraussetzung A");
    Voraussetzung vorausA = new Voraussetzung();
    talentA.setVoraussetzung(vorausA);
    IdLink linkA = new IdLink(null, talentA, null, 3, null);

    // Talent B:
    Talent talentB = createTalent("Voraussetzung B");
    IdLink linkB = new IdLink(null, talentB, null, 1, null);

    // Voraussetzung für Talent 1
    Voraussetzung voraus1 = new Voraussetzung();
    talent1.setVoraussetzung(voraus1);

    // 1. Ohne Voraussetzung: kann hinzugefügt werden
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    // 2. Mit Voraussetzung: talent1 unvereinbar mit talentA, kann nicht hinzugefügt werden
    listLinks.clear();
    listOpVor.clear();

    listLinks.add(new IdLink(talentA, talent1, null, CharElement.KEIN_WERT, null));
    OptionVoraussetzung optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    vorausA.setNegVoraussetzung(listOpVor);

    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 3. talent1 unvereinbar mit talentB, kann nicht hinzugefügt werden
    listLinks = new ArrayList<IdLink>();
    listOpVor = new ArrayList<OptionVoraussetzung>();

    listLinks.add(new IdLink(talent1, talentB, null, CharElement.KEIN_WERT, null));
    optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    voraus1.setNegVoraussetzung(listOpVor);
    voraussAdmin.addVoraussetzungLink(linkTalent1);

    assertFalse(voraussAdmin.changeCanAddElement(false, linkB));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkB));
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 4. talent1 unvereinbar mit talentA (beide Richtungen) & talentB, kann nicht hinzugefügt
    // werden
    listLinks.add(new IdLink(talent1, talentA, null, CharElement.KEIN_WERT, null));

    assertFalse(voraussAdmin.changeCanAddElement(false, linkB));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkB));
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));

    // 5. talent1 nicht mehr unvereinbar mit TalentB
    listLinks.remove(0);

    assertFalse(voraussAdmin.changeCanAddElement(false, linkB));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkB));
  }
  /** Hinzufügen von Talenten, einfache Voraussetzungen */
  @Test
  public void canAddElementPositiv() {
    List<IdLink> listLinks = new ArrayList<IdLink>();
    List<OptionVoraussetzung> listOpVor = new ArrayList<OptionVoraussetzung>();

    // Erzeugen eines Talents:
    // Talent A:
    Talent talentA = createTalent("Voraussetzung");
    Voraussetzung vorausA = new Voraussetzung();
    talentA.setVoraussetzung(vorausA);
    IdLink linkA = new IdLink(null, talentA, null, 3, null);

    // 1. Mindestens talent1 auf Wert 5
    listLinks.clear();
    listOpVor.clear();

    listLinks.add(new IdLink(talentA, talent1, null, 5, null));
    OptionVoraussetzung optVor = new OptionVoraussetzung();
    optVor.setLinkList(listLinks);
    listOpVor.add(optVor);
    vorausA.setPosVoraussetzung(listOpVor);

    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent1, 5);
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent1, 4);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent1, 6);
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    // 2. Mindestens talent1 auf Wert 5 und talent2 auf Wert 6 (ListLinks)
    listLinks.add(new IdLink(talentA, talent2, null, 6, null));

    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent2, 6);
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent1, 2);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateWert(linkTalent1, 8);
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));

    // 3. Mindestens talent1: 5, talent2: 6, Talent3: 7 + ZweitZiel und Text
    listLinks.clear();
    listOpVor.clear();

    listLinks.add(new IdLink(talentA, vorteil1, talent1, 7, "test"));
    OptionVoraussetzung optVor2 = new OptionVoraussetzung();
    optVor2.setLinkList(listLinks);
    listOpVor.add(optVor2);
    vorausA.setPosVoraussetzung(listOpVor);

    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorVorteil.updateWert(linkVorteil1, 7);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorVorteil.updateZweitZiel(linkVorteil1, talent1);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorVorteil.updateText(linkVorteil1, "test");
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorVorteil.updateText(linkVorteil1, "test2");
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorTalent.updateText(linkVorteil1, "test");
    prozessorVorteil.updateZweitZiel(linkVorteil1, talent2);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorVorteil.updateZweitZiel(linkVorteil1, talent1);
    prozessorVorteil.updateWert(linkVorteil1, 6);
    assertFalse(voraussAdmin.changeCanAddElement(true, linkA));
    prozessorVorteil.updateWert(linkVorteil1, 7);
    assertFalse(voraussAdmin.changeCanAddElement(false, linkA));
    assertTrue(voraussAdmin.changeCanAddElement(true, linkA));
  }