package test.parser.svg.parsers;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.awt.geom.Point2D;
import java.text.ParseException;
import net.sf.latexdraw.parsers.svg.parsers.SVGPointsParser;
import org.junit.Before;
import org.junit.Test;
import test.parser.TestCodeParser;
public class TestSVGPointsParser extends TestCodeParser {
@Before
public void setUp() {
parser = new SVGPointsParser(""); //$NON-NLS-1$
parser2 = new SVGPointsParser(""); //$NON-NLS-1$
}
@Test
@Override
public void testParse() throws ParseException {
parser.setCode(" 1, 2, \t 3\n 4 \r ,5 6 \n \t "); //$NON-NLS-1$
parser.parse();
assertNotNull(((SVGPointsParser)parser).getPoints());
assertEquals(((SVGPointsParser)parser).getPoints().get(0), new Point2D.Double(1., 2.));
assertEquals(((SVGPointsParser)parser).getPoints().get(1), new Point2D.Double(3., 4.));
assertEquals(((SVGPointsParser)parser).getPoints().get(((SVGPointsParser)parser).getPoints().size() - 1), new Point2D.Double(5., 6.));
try {
parser.setCode("dsf"); //$NON-NLS-1$
parser.parse();
}catch(ParseException e) {
/* */ }
try {
parser.setCode("10 10 10"); //$NON-NLS-1$
parser.parse();
}catch(ParseException e) {
/* */ }
try {
parser.setCode("10,, 10 10 10"); //$NON-NLS-1$
parser.parse();
}catch(ParseException e) {
/* */ }
try {
parser.setCode(",10 10 10 10"); //$NON-NLS-1$
parser.parse();
}catch(ParseException e) {
/* */ }
try {
parser.setCode("10 10 10,"); //$NON-NLS-1$
parser.parse();
}catch(ParseException e) {
/* */ }
try {
parser.setCode("10 10 aa 10"); //$NON-NLS-1$
parser.parse();
}catch(ParseException e) {
/* */ }
try {
parser.setCode("10 10 10e 10"); //$NON-NLS-1$
parser.parse();
}catch(ParseException e) {
/* */ }
try {
parser.setCode("10 10E 10 10"); //$NON-NLS-1$
parser.parse();
}catch(ParseException e) {
/* */ }
}
@Test
@Override
public void testSkipComment() {
// No comment allowed.
}
@Test
@Override
public void testSkipWSP() {
parser.setCode(" \r \t \n 10 10"); //$NON-NLS-1$
parser.skipWSP();
assertEquals(parser.getChar(), '1');
}
@Test
public void testIsWSP() {
parser.setCode(" \r\t\na"); //$NON-NLS-1$
assertTrue(parser.isWSP());
parser.nextChar();
assertTrue(parser.isWSP());
parser.nextChar();
assertTrue(parser.isWSP());
parser.nextChar();
assertTrue(parser.isWSP());
parser.nextChar();
assertFalse(parser.isWSP());
parser.nextChar();
assertFalse(parser.isWSP());
}
@Test
public void testSkipWSPComma() {
parser.setCode(" \r , \t \n 10 10"); //$NON-NLS-1$
((SVGPointsParser)parser).skipWSPComma();
assertEquals(parser.getChar(), '1');
parser.setCode(" \r , \t \n , 10 10"); //$NON-NLS-1$
((SVGPointsParser)parser).skipWSPComma();
assertEquals(parser.getChar(), ',');
}
@Test
public void testReadNumber() throws ParseException {
SVGPointsParser p = (SVGPointsParser)parser;
p.setCode("10"); //$NON-NLS-1$
assertEquals(p.readNumber(), 10., 0.0001);
p.setCode("+10"); //$NON-NLS-1$
assertEquals(p.readNumber(), 10., 0.0001);
p.setCode("-10"); //$NON-NLS-1$
assertEquals(p.readNumber(), -10., 0.0001);
p.setCode("-10."); //$NON-NLS-1$
assertEquals(p.readNumber(), -10., 0.0001);
p.setCode("-.1"); //$NON-NLS-1$
assertEquals(p.readNumber(), -.1, 0.0001);
p.setCode("10e2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 1000., 0.0001);
p.setCode("10e-2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0.1, 0.0001);
p.setCode("10e+2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 1000., 0.0001);
p.setCode("10E2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 1000., 0.0001);
p.setCode("10E-2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0.1, 0.0001);
p.setCode("10E+2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 1000., 0.0001);
p.setCode("0.E+2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
try {
p.setCode(".E+2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
}catch(ParseException e) {
/* */}
try {
p.setCode(".Efd+2"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
}catch(ParseException e) {
/* */}
try {
p.setCode(""); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
}catch(ParseException e) {
/* */}
try {
p.setCode(" \t"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
}catch(ParseException e) {
/* */}
try {
p.setCode("aa"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
}catch(ParseException e) {
/* */}
try {
p.setCode("."); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
}catch(ParseException e) {
/* */}
try {
p.setCode("--10"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
}catch(ParseException e) {
/* */}
try {
p.setCode("+-10"); //$NON-NLS-1$
assertEquals(p.readNumber(), 0., 0.0001);
}catch(ParseException e) {
/* */}
}
@Test
public void testGetPoints() throws ParseException {
parser.setCode(" 1, 2,3 4 5,6"); //$NON-NLS-1$
parser.parse();
assertNotNull(((SVGPointsParser)parser).getPoints());
assertEquals(((SVGPointsParser)parser).getPoints().get(0), new Point2D.Double(1., 2.));
assertEquals(((SVGPointsParser)parser).getPoints().get(1), new Point2D.Double(3., 4.));
assertEquals(((SVGPointsParser)parser).getPoints().get(((SVGPointsParser)parser).getPoints().size() - 1), new Point2D.Double(5., 6.));
}
}