@Test public void testGetSet() throws PersistenceLayerException { setUpPC(); TransparentPlayerCharacter pc = new TransparentPlayerCharacter(); initializeObjects(); assertTrue(parse(getSubTokenName() + "|EXCLUSIVE[ALL]")); finishLoad(); ChooseInformation<?> info = primaryProf.get(ObjectKey.CHOOSE_INFO); pc.classSet.add(cl1); Collection<?> set = info.getSet(pc); assertEquals(2, set.size()); assertTrue(set.contains(s4)); assertTrue(set.contains(s5)); pc.skillSet.put(s1, 2); pc.skillSet.put(s2, 0); set = info.getSet(pc); assertEquals(2, set.size()); assertTrue(set.contains(s4)); assertTrue(set.contains(s5)); pc.classSkillSet.add(s4); pc.crossClassSkillSet.add(s5); set = info.getSet(pc); assertTrue(set.isEmpty()); }
@Test public void testGetSetFiltered() throws PersistenceLayerException { setUpPC(); TransparentPlayerCharacter pc = new TransparentPlayerCharacter(); initializeObjects(); assertTrue(parse(getSubTokenName() + "|CROSSCLASS[TYPE=Masterful]")); finishLoad(); ChooseInformation<?> info = primaryProf.get(ObjectKey.CHOOSE_INFO); pc.classSet.add(cl1); Collection<?> set = info.getSet(pc); assertEquals(2, set.size()); assertTrue(set.contains(s2)); assertTrue(set.contains(s3)); pc.skillCostMap.put(s2, cl1, SkillCost.CLASS); set = info.getSet(pc); assertFalse(set.isEmpty()); assertEquals(1, set.size()); assertTrue(set.contains(s3)); pc.skillCostMap.put(s4, cl1, SkillCost.CROSS_CLASS); pc.skillCostMap.put(s5, cl1, SkillCost.CROSS_CLASS); set = info.getSet(pc); assertFalse(set.isEmpty()); assertEquals(2, set.size()); assertTrue(set.contains(s3)); assertTrue(set.contains(s4)); }
@Override public String[] unparse(LoadContext context, CDOMObject cdo) { ChooseInformation<?> tc = context.getObjectContext().getObject(cdo, ObjectKey.CHOOSE_INFO); if (tc == null) { return null; } if (!tc.getName().equals(getTokenName())) { // Don't unparse anything that isn't owned by this SecondaryToken /* * TODO Either this really needs to be a check against the subtoken * (which thus needs to be stored in the ChooseInfo) or there needs * to be a loadtime check that no more than once CHOOSE subtoken * uses the same AssociationListKey... :P */ return null; } if (!tc.getGroupingState().isValid()) { context.addWriteMessage( "Invalid combination of objects" + " was used in: " + getParentToken() + ":" + getTokenName()); return null; } StringBuilder sb = new StringBuilder(); sb.append(tc.getLSTformat()); String title = tc.getTitle(); if (!title.equals(getDefaultTitle())) { sb.append("|TITLE="); sb.append(title); } return new String[] {sb.toString()}; }