Test the interaction of prerequisites on PCClasses and bonuses and the Bypass Class Prereqs flag. @throws PersistenceLayerException the persistence layer exception
()
| 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 |
nothing calls this directly
no test coverage detected