package com.lateensoft.pathfinder.toolkit.serialize;
import com.lateensoft.pathfinder.toolkit.model.character.Spell;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import java.io.InvalidObjectException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
@RunWith(JUnit4.class)
public class SpellXMLAdapterTest {
private static final SpellXMLAdapter m_adapter = new SpellXMLAdapter();
@Test
public void tesConvert() throws InvalidObjectException, DocumentException {
Spell expectedSpell = new Spell("fire", 3);
expectedSpell.setPrepared(20);
expectedSpell.setDescription("description and \nStuff");
Element spellElement = m_adapter.toXML(expectedSpell);
Spell generatedSpell = m_adapter.toObject(spellElement);
assertEquals(expectedSpell, generatedSpell);
}
@Test
public void testToObjectInvalid() throws InvalidObjectException, DocumentException {
try {
Element invalidElement1 = DocumentHelper.parseText("<spell >" +
"</spell>").getRootElement();
m_adapter.toObject(invalidElement1);
fail();
} catch (InvalidObjectException e) {} catch (DocumentException e) {
e.printStackTrace();
}
try {
Element invalidElement2 = DocumentHelper.parseText("<spell name=\"fire\" level=\"1.5\" prepared=\"abc\">" +
"<desc></desc></spell>").getRootElement();
m_adapter.toObject(invalidElement2);
fail();
} catch (InvalidObjectException e) {}
try {
Element invalidElement3 = DocumentHelper.parseText("<spell name=\"fire\" level=\"20\" prepared=\"-1\">" +
"<desc></desc></spell>").getRootElement();
m_adapter.toObject(invalidElement3);
fail();
} catch (InvalidObjectException e) {}
try {
Element invalidElement4 = DocumentHelper.parseText("<spell name=\"fire\" level=\"3.0\" prepared=\"20.0\">" +
"<desc>description and \nStuff</desc></spell>").getRootElement();
m_adapter.toObject(invalidElement4);
} catch (InvalidObjectException e) {}
}
}