@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))); }
/** 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)); }