/** * Initializes the {@link megamek.client.bot.princess.BehaviorSettings} cache. If the cache is empty, it will load from * mmconf/princessBehaviors.xml. Also, if the "DEFAULT behavior is missing, it will be added. * * @param reinitialize Set TRUE to force the cache to be completely rebuilt. */ public void init(boolean reinitialize) { synchronized (behaviorMap) { if (reinitialize) { behaviorMap.clear(); } if (behaviorMap.isEmpty()) { loadBehaviorSettings(buildPrincessBehaviorDoc()); } addDefaultBehaviors(); } }
@Test public void testLoadBehaviorSettings() throws IOException, SAXException, ParserConfigurationException { // Test loading a good behavior settings file. testFactory.behaviorMap.clear(); TestCase.assertTrue(testFactory.loadBehaviorSettings(buildTestDocument())); TestCase.assertEquals(5, testFactory.behaviorMap.size()); String[] expectedBehaviors = new String[] {BehaviorSettingsFactoryTestConstants.NM_RECKLESS, BehaviorSettingsFactoryTestConstants.NM_COWARDLY, BehaviorSettingsFactoryTestConstants.NM_ESCAPE, BehaviorSettingsFactoryTestConstants.NM_DEFAULT, BehaviorSettingsFactory.BERSERK_BEHAVIOR_DESCRIPTION}; TestCase.assertEquals(Sets.newSet(expectedBehaviors), Sets.newSet(testFactory.getBehaviorNames())); // Test loading a null behavior settings file. testFactory.behaviorMap.clear(); TestCase.assertFalse(testFactory.loadBehaviorSettings(null)); TestCase.assertEquals(4, testFactory.behaviorMap.size()); expectedBehaviors = new String[]{BehaviorSettingsFactory.BERSERK_BEHAVIOR_DESCRIPTION, BehaviorSettingsFactory.COWARDLY_BEHAVIOR_DESCRIPTION, BehaviorSettingsFactory.DEFAULT_BEHAVIOR_DESCRIPTION, BehaviorSettingsFactory.ESCAPE_BEHAVIOR_DESCRIPTION}; Assert.assertArrayEquals(expectedBehaviors, testFactory.getBehaviorNames()); } }