package test.parser; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.text.ParseException; import net.sf.latexdraw.parsers.CodeParser; import org.junit.Test; public abstract class TestCodeParser { protected CodeParser parser; protected CodeParser parser2; @Test public void testInitialise() { parser.setPosition(10); parser.initialise(); assertTrue(parser.getPosition() == 0); } @Test public void testGetCharAt() { parser.setCode("test"); //$NON-NLS-1$ assertEquals(CodeParser.EOC, parser.getCharAt(-2)); assertEquals(CodeParser.EOC, parser.getCharAt(10)); assertEquals(CodeParser.EOC, parser.getCharAt(4)); assertEquals('t', parser.getCharAt(0)); assertEquals('e', parser.getCharAt(1)); assertEquals('s', parser.getCharAt(2)); assertEquals('t', parser.getCharAt(3)); } @Test public void testGetCode() { String code = "this is my code"; //$NON-NLS-1$ parser.setCode(code); assertEquals(parser.getCode(), code); code = ""; //$NON-NLS-1$ parser.setCode(code); assertEquals(parser.getCode(), code); } @Test public void testSetCode() { String code = "a piece of code"; //$NON-NLS-1$ parser.setPosition(10); parser.setCode(code); assertTrue(parser.getPosition() == 0); parser.setCode(null); assertEquals(parser.getCode(), code); } @Test public void testNextChar() { parser.setCode("code"); //$NON-NLS-1$ assertTrue(parser.nextChar() == 'o'); assertTrue(parser.nextChar() == 'd'); assertTrue(parser.nextChar() == 'e'); assertTrue(parser.nextChar() == CodeParser.EOC); assertTrue(parser.nextChar() == CodeParser.EOC); assertTrue(parser.nextChar() == CodeParser.EOC); parser.setPosition(20); assertTrue(parser.nextChar() == CodeParser.EOC); } @Test public void testGetChar() { parser.setCode("my code"); //$NON-NLS-1$ assertTrue(parser.getChar() == 'm'); parser.setPosition(1); assertTrue(parser.getChar() == 'y'); parser.setPosition(2); assertTrue(parser.getChar() == ' '); parser.setPosition(10); assertTrue(parser.getChar() == CodeParser.EOC); } @Test public void testIsEOC() { parser.setCode(""); //$NON-NLS-1$ assertTrue(parser.isEOC()); parser.setCode("aa"); //$NON-NLS-1$ assertFalse(parser.isEOC()); parser.nextChar(); assertFalse(parser.isEOC()); parser.nextChar(); assertTrue(parser.isEOC()); parser.setPosition(100); assertTrue(parser.isEOC()); } @Test public void testGetPosition() { parser.initialise(); assertTrue(parser.getPosition() == 0); parser.setPosition(10); assertTrue(parser.getPosition() == 10); parser.setPosition(100); assertTrue(parser.getPosition() == 100); } @Test public abstract void testSkipComment() throws ParseException; @Test public abstract void testSkipWSP() throws ParseException; @Test public abstract void testParse() throws ParseException; @Test public void testIsEOL() { parser.setCode(""); //$NON-NLS-1$ assertFalse(parser.isEOL()); parser.setCode("a"); //$NON-NLS-1$ assertFalse(parser.isEOL()); parser.nextChar(); assertFalse(parser.isEOL()); parser.setCode("a\n"); //$NON-NLS-1$ assertFalse(parser.isEOL()); parser.nextChar(); assertTrue(parser.isEOL()); parser.setCode("a\r"); //$NON-NLS-1$ assertFalse(parser.isEOL()); parser.nextChar(); assertTrue(parser.isEOL()); parser.setCode("a\r\n"); //$NON-NLS-1$ assertFalse(parser.isEOL()); parser.nextChar(); assertTrue(parser.isEOL()); assertTrue(parser.getPosition() == 2); } @Test public void testSetPosition() { parser.setCode(""); //$NON-NLS-1$ parser.setPosition(10); assertEquals(10, parser.getPosition()); parser.setPosition(-1); assertEquals(10, parser.getPosition()); parser.setPosition(Integer.MAX_VALUE); assertEquals(Integer.MAX_VALUE, parser.getPosition()); parser.setPosition(Integer.MIN_VALUE); assertEquals(Integer.MAX_VALUE, parser.getPosition()); } @Test public void testSetLinePosition() { parser.setLinePosition(10); assertEquals(10, parser.getLinePosition()); parser.setLinePosition(0); assertEquals(10, parser.getLinePosition()); parser.setLinePosition(-10); assertEquals(10, parser.getLinePosition()); parser.setLinePosition(20); assertEquals(20, parser.getLinePosition()); parser.setLinePosition(Integer.MIN_VALUE); assertEquals(20, parser.getLinePosition()); parser.setLinePosition(Integer.MAX_VALUE); assertEquals(Integer.MAX_VALUE, parser.getLinePosition()); } }