package net.sf.arianne.marboard.server.core.parser;
import java.text.ParseException;
import marauroa.common.game.Attributes;
import marauroa.common.game.RPClass;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
/**
* Tests for AttributesParser
*
* @author hendrik
*/
public class AttributesParserTest {
/**
* @throws ParseException
*/
@Test
public void testFindEndPosOfAttribute() throws ParseException {
Attributes attributes = new Attributes(RPClass.getBaseRPObjectDefault());
AttributesParser parser = new AttributesParser(": [a=b][c=d]", attributes);
assertThat(Integer.valueOf(parser.findEndPosOfAttribute(0)), equalTo(Integer.valueOf(6)));
parser = new AttributesParser(": [a=b\\]e][c=d]", attributes);
assertThat(Integer.valueOf(parser.findEndPosOfAttribute(0)), equalTo(Integer.valueOf(9)));
}
/**
* @throws ParseException
*/
@Test(expected=ParseException.class)
public void testFindEndPosOfAttributeFailNoClose() throws ParseException {
Attributes attributes = new Attributes(RPClass.getBaseRPObjectDefault());
AttributesParser parser = new AttributesParser(": [a=b\\][c=d", attributes);
parser.findEndPosOfAttribute(0);
}
/**
* @throws ParseException
*/
@Test
public void testCheckSplitterPosition() throws ParseException {
Attributes attributes = new Attributes(RPClass.getBaseRPObjectDefault());
AttributesParser parser = new AttributesParser("", attributes);
parser.checkSplitterPosition(0, 1, 2);
}
/**
* @throws ParseException
*/
@Test(expected=ParseException.class)
public void testCheckSplitterPositionFailNo() throws ParseException {
Attributes attributes = new Attributes(RPClass.getBaseRPObjectDefault());
AttributesParser parser = new AttributesParser("", attributes);
parser.checkSplitterPosition(0, -1, 2);
}
/**
* @throws ParseException
*/
@Test(expected=ParseException.class)
public void testCheckSplitterPositionFailOutside() throws ParseException {
Attributes attributes = new Attributes(RPClass.getBaseRPObjectDefault());
AttributesParser parser = new AttributesParser("", attributes);
parser.checkSplitterPosition(0, 3, 2);
}
/**
* @throws ParseException
*/
@Test
public void testParseAttribute() throws ParseException {
Attributes attributes = new Attributes(RPClass.getBaseRPObjectDefault());
AttributesParser parser = new AttributesParser(": [a=b][c=d]", attributes);
parser.parseAttribute(2, 6);
assertThat(attributes.get("a"), equalTo("b"));
}
/**
* @throws ParseException
*/
@Test
public void testParse() throws ParseException {
Attributes attributes = new Attributes(RPClass.getBaseRPObjectDefault());
AttributesParser parser = new AttributesParser(": [a=b][c=d][e=\\\\f][g=h\\]abcd][i=\\]]", attributes);
parser.parse();
assertThat(attributes.get("a"), equalTo("b"));
assertThat(attributes.get("c"), equalTo("d"));
assertThat(attributes.get("e"), equalTo("\\f"));
assertThat(attributes.get("g"), equalTo("h]abcd"));
assertThat(attributes.get("i"), equalTo("]"));
}
/**
* @throws ParseException
*/
@Test(expected=ParseException.class)
public void testParseFail() throws ParseException {
Attributes attributes = new Attributes(RPClass.getBaseRPObjectDefault());
AttributesParser parser = new AttributesParser(": [a=b][c=d", attributes);
parser.parse();
}
}