@Test
 public void testMortalCharmTemplate() throws Exception {
   Element templateElement = DocumentUtilities.read(xml).getRootElement();
   GenericMagicTemplate template = parser.parseTemplate(templateElement);
   ICharmTemplate charmTemplate = template.getCharmTemplate();
   assertEquals(MartialArtsLevel.Mortal, charmTemplate.getMartialArtsRules().getStandardLevel());
   assertFalse(charmTemplate.canLearnCharms());
 }
 @Test
 public void picksUpMartialArtsRules() throws Exception {
   String celestialXml =
       "<magicTemplate>"
           + //$NON-NLS-1$
           "<charmTemplate charmType=\"None\" ><martialArts rulesClass=\"net.sf.anathema.character.generic.dummy.magic.DummyMartialArtsRules\" level=\"Terrestrial\" /></charmTemplate>" //$NON-NLS-1$
           + "</magicTemplate>"; //$NON-NLS-1$
   Element templateElement = DocumentUtilities.read(celestialXml).getRootElement();
   GenericMagicTemplate template = parser.parseTemplate(templateElement);
   Assert.assertTrue(
       template.getCharmTemplate().getMartialArtsRules() instanceof DummyMartialArtsRules);
 }
 @Test
 public void testDefaultRulesSetting() throws Exception {
   String celestialXml =
       "<magicTemplate>"
           + //$NON-NLS-1$
           "<charmTemplate charmType=\"None\" ><martialArts level=\"Terrestrial\" /></charmTemplate>" //$NON-NLS-1$
           + "</magicTemplate>"; //$NON-NLS-1$
   Element templateElement = DocumentUtilities.read(celestialXml).getRootElement();
   GenericMagicTemplate template = parser.parseTemplate(templateElement);
   Assert.assertTrue(
       template.getCharmTemplate().getMartialArtsRules() instanceof DefaultMartialArtsRules);
 }
 @Test
 public void testAlienCharmsAllowed() throws Exception {
   String typeXml =
       "<magicTemplate>" //$NON-NLS-1$
           + "<charmTemplate charmType=\"None\">" //$NON-NLS-1$
           + " <alienCharms> <caste type=\"DummyCaste\"/></alienCharms>" //$NON-NLS-1$
           + "<martialArts level=\"Celestial\" highLevel=\"false\" />" //$NON-NLS-1$
           + "</charmTemplate>" //$NON-NLS-1$
           + "</magicTemplate>"; //$NON-NLS-1$
   Element templateElement = DocumentUtilities.read(typeXml).getRootElement();
   GenericMagicTemplate template = parser.parseTemplate(templateElement);
   assertTrue(
       template
           .getCharmTemplate()
           .isAllowedAlienCharms(new DummyCasteType("DummyCaste"))); // $NON-NLS-1$
 }
 @Test
 public void testHighLevelSettingModified() throws Exception {
   String celestialXml =
       "<magicTemplate>"
           + //$NON-NLS-1$
           "<charmTemplate charmType=\"None\" ><martialArts level=\"Terrestrial\" highLevel=\"true\"/></charmTemplate>" //$NON-NLS-1$
           + "</magicTemplate>"; //$NON-NLS-1$
   Element templateElement = DocumentUtilities.read(celestialXml).getRootElement();
   GenericMagicTemplate template = parser.parseTemplate(templateElement);
   DummyCharm dummyMartialArtsCharm = new DummyCharm("Dummy") { // $NON-NLS-1$
         @Override
         public boolean hasAttribute(Identified attribute) {
           return attribute.getId().equals("MartialArts")
               || attribute.getId().equals("Celestial"); // $NON-NLS-1$ //$NON-NLS-2$
         }
       };
   assertTrue(
       template
           .getCharmTemplate()
           .getMartialArtsRules()
           .isCharmAllowed(dummyMartialArtsCharm, null, false));
 }