MCPcopy Create free account
hub / github.com/PCGen/pcgen / testBypassClassPrereqs

Method testBypassClassPrereqs

code/src/test/pcgen/core/PCClassTest.java:198–275  ·  view source on GitHub ↗

Test the interaction of prerequisites on PCClasses and bonuses and the Bypass Class Prereqs flag. @throws PersistenceLayerException the persistence layer exception

()

Source from the content-addressed store, hash-verified

196 * @throws PersistenceLayerException the persistence layer exception
197 */
198 @Test
199 void testBypassClassPrereqs() throws PersistenceLayerException
200 {
201 LoadContext context = Globals.getContext();
202
203 // Setup class with prereqs and var based abilities with prereqs.
204 final PreVariableParser parser = new PreVariableParser();
205 final Prerequisite aPrereq =
206 parser.parse("VARGTEQ", "Foo,1", false, false);
207 final GameMode gameMode = SettingsHandler.getGameAsProperty().get();
208 RuleCheck aClassPreRule = gameMode.getModeContext().getReferenceContext()
209 .silentlyGetConstructedCDOMObject(RuleCheck.class, "CLASSPRE");
210 aClassPreRule.setDefault(false);
211
212 final PCClass aPrClass = new PCClass();
213 aPrClass.setName("PreReqClass");
214 aPrClass.put(StringKey.KEY_NAME, "KEY_PreReqClass");
215 final BonusObj aBonus = Bonus.newBonus(context, "MISC|SR|10|PREVARGTEQ:Foo,2");
216
217 if (aBonus != null)
218 {
219 aPrClass.addToListFor(ListKey.BONUS, aBonus);
220 }
221 aPrClass.addPrerequisite(aPrereq);
222 final PCClass aQClass = new PCClass();
223 aQClass.setName("QualClass");
224 aQClass.put(StringKey.KEY_NAME, "KEY_QualClass");
225 CDOMDirectSingleRef<PCClass> ref = CDOMDirectSingleRef.getRef(aPrClass);
226 aQClass.addToListFor(ListKey.QUALIFY, new Qualifier(ref));
227
228 final PCClass aNqClass = new PCClass();
229 aNqClass.setName("NonQualClass");
230 aNqClass.put(StringKey.KEY_NAME, "KEY_NonQualClass");
231 aNqClass.put(VariableKey.getConstant("Foo"), FormulaFactory.ONE);
232 aNqClass.getOriginalClassLevel(2).put(VariableKey.getConstant("Foo"),
233 FormulaFactory.getFormulaFor(2));
234
235 finishLoad();
236
237 // Setup character without prereqs
238 final PlayerCharacter character = getCharacter();
239
240 // Test no prereqs and no bypass fails class and var
241 assertFalse(aPrClass
242 .qualifies(character, aPrClass), "PC with no prereqs should fail class qual test.");
243 assertEquals(0.0,
244 aPrClass.getBonusTo("MISC", "SR", 1, character), 0.1, "PC with no prereqs should fail var qual test."
245 );
246
247 // Test no prereqs and bypass passes class and fails var
248 aClassPreRule.setDefault(true);
249 assertTrue(
250 aPrClass.qualifies(character, aPrClass),
251 "PC with no prereqs should pass class qual test when bypassing prereqs is on.");
252 assertEquals(
253 0.0, aPrClass.getBonusTo("MISC", "SR", 1, character), 0.1,
254 "PC with no prereqs should fail var qual test when bypass prereqs is on.");
255

Callers

nothing calls this directly

Calls 15

getContextMethod · 0.95
parseMethod · 0.95
getGameAsPropertyMethod · 0.95
getModeContextMethod · 0.95
setDefaultMethod · 0.95
newBonusMethod · 0.95
getRefMethod · 0.95
getConstantMethod · 0.95
getOriginalClassLevelMethod · 0.95
getFormulaForMethod · 0.95
qualifiesMethod · 0.95
getBonusToMethod · 0.95

Tested by

no test coverage detected