/*******************************************************************************
* Copyright 2014 Tobias Welther
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package de.tobiyas.racesandclasses.datacontainer.traitholdercontainer.classes;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.io.File;
import java.io.IOException;
import org.junit.Test;
import de.tobiyas.racesandclasses.RacesAndClasses;
import de.tobiyas.racesandclasses.datacontainer.traitholdercontainer.AbstractHolderManager;
import de.tobiyas.racesandclasses.datacontainer.traitholdercontainer.AbstractTraitHolderTest;
import de.tobiyas.racesandclasses.datacontainer.traitholdercontainer.exceptions.HolderParsingException;
import de.tobiyas.util.config.YAMLConfigExtended;
public class ClassContainerTest extends AbstractTraitHolderTest {
public ClassContainerTest() throws IOException {
super("test", "[test]", new ClassContainer( new YAMLConfigExtended(File.createTempFile("classes", ".yml")), "test"));
}
@Override
protected AbstractHolderManager getHolderManager() {
return RacesAndClasses.getPlugin().getClassManager();
}
@Test
@Override
public void test_config_load_works_with_full_config() {
double manabonus = 42;
String maxHealthMod = "+42";
config.set(holderName + ".config.manabonus", manabonus);
config.set(holderName + ".config.classtag", holderTag);
config.set(holderName + ".config.health", maxHealthMod);
try{
sut.load();
ClassContainer container = (ClassContainer) sut;
assertEquals(manabonus, container.getManaBonus(), 0.001);
assertEquals(62d, container.modifyToClass(20d), 0.001);
assertEquals(holderTag, container.getTag());
assertEquals(0, sut.getTraits().size());
}catch(HolderParsingException exp){
fail("Config full load failed: " + exp);
}
}
@Test
@Override
public void test_config_load_works_with_empty_config() {
double manabonus = 0;
try{
sut.load();
ClassContainer container = (ClassContainer) sut;
assertEquals(manabonus, container.getManaBonus(), 0.001);
assertEquals(20d, container.modifyToClass(20d), 0.001);
assertEquals(holderTag, container.getTag());
assertEquals(0, sut.getTraits().size());
}catch(HolderParsingException exp){
fail("Config full load failed: " + exp);
}
}
@Test
public void classHealthModify_works(){
String mult = "*2";
String minus = "-2";
String plus = "+2";
ClassContainer container = (ClassContainer) sut;
container.classHealthModValue = container.evaluateValue(mult);
assertEquals(2, container.classHealthModValue, 0.001);
assertEquals("*", container.classHealthModify);
assertEquals(40d, container.modifyToClass(20d), 0.001);
container.classHealthModValue = container.evaluateValue(minus);
assertEquals(2, container.classHealthModValue, 0.001);
assertEquals("-", container.classHealthModify);
assertEquals(18, container.modifyToClass(20d), 0.001);
container.classHealthModValue = container.evaluateValue(plus);
assertEquals(2, container.classHealthModValue, 0.001);
assertEquals("+", container.classHealthModify);
assertEquals(22d, container.modifyToClass(20d), 0.001);
}
@Test
public void empty_load_equals_empty_load() throws IOException{
try{
sut.load();
ClassContainer loadContainer = (ClassContainer) ClassContainer
.loadClass(new YAMLConfigExtended(File.createTempFile("classes", ".yml")), holderName);
ClassContainer container = (ClassContainer) sut;
assertEquals(loadContainer.getManaBonus(), container.getManaBonus(), 0.001);
assertEquals(loadContainer.modifyToClass(20d), container.modifyToClass(20d), 0.001);
assertEquals(loadContainer.getTag(), container.getTag());
assertEquals(loadContainer.getTraits().size(), sut.getTraits().size());
}catch(HolderParsingException exp){
fail("Config full load failed: " + exp);
}
}
}