package test.parser.svg.parsers; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.text.ParseException; import net.sf.latexdraw.parsers.svg.parsers.SVGLength; import net.sf.latexdraw.parsers.svg.parsers.SVGLengthParser; import net.sf.latexdraw.parsers.svg.parsers.UnitProcessor; import org.junit.Test; public class TestSVGLengthParser { @SuppressWarnings("unused") @Test public void testParseLength() throws ParseException { SVGLengthParser p; SVGLength l; try { new SVGLengthParser(null); fail(); }catch(IllegalArgumentException e) { /* */ } try { p = new SVGLengthParser(""); //$NON-NLS-1$ l = p.parseLength(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1m"); //$NON-NLS-1$ l = p.parseLength(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("m"); //$NON-NLS-1$ l = p.parseLength(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1p"); //$NON-NLS-1$ l = p.parseLength(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1e1i"); //$NON-NLS-1$ l = p.parseLength(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1ci"); //$NON-NLS-1$ l = p.parseLength(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1 c "); //$NON-NLS-1$ l = p.parseLength(); fail(); }catch(ParseException e) { /* */ } p = new SVGLengthParser("1mm"); //$NON-NLS-1$ l = p.parseLength(); assertEquals(l.getValueAsString(), "1"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(1, SVGLength.LengthType.MM), l.getValue(), 0.001); p = new SVGLengthParser("0.65 cm"); //$NON-NLS-1$ l = p.parseLength(); assertEquals(l.getValueAsString(), "0.65"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(0.65, SVGLength.LengthType.CM), l.getValue(), 0.001); p = new SVGLengthParser("\t -10.65 \t \n pc"); //$NON-NLS-1$ l = p.parseLength(); assertEquals(l.getValueAsString(), "-10.65"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-10.65, SVGLength.LengthType.PC), l.getValue(), 0.001); p = new SVGLengthParser("\t -10.65e2 \t \n px \t "); //$NON-NLS-1$ l = p.parseLength(); assertEquals(l.getValueAsString(), "-10.65e2"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-10.65e2, SVGLength.LengthType.PX), l.getValue(), 0.001); p = new SVGLengthParser("\t -10.65e0pt \t "); //$NON-NLS-1$ l = p.parseLength(); assertEquals(l.getValueAsString(), "-10.65e0"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-10.65e0, SVGLength.LengthType.PT), l.getValue(), 0.001); p = new SVGLengthParser("\t -1.in \t "); //$NON-NLS-1$ l = p.parseLength(); assertEquals(l.getValueAsString(), "-1."); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-1., SVGLength.LengthType.IN), l.getValue(), 0.001); p = new SVGLengthParser("-1."); //$NON-NLS-1$ l = p.parseLength(); assertEquals(l.getValueAsString(), "-1."); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-1., SVGLength.LengthType.NUMBER), l.getValue(), 0.001); } @Test public void testParseNumberOrPercent() throws ParseException { SVGLengthParser p; SVGLength l; p = new SVGLengthParser("1mm"); //$NON-NLS-1$ l = p.parseNumberOrPercent(); assertEquals(l.getValueAsString(), "1"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.NUMBER); assertEquals(UnitProcessor.INSTANCE.toUserUnit(1, SVGLength.LengthType.NUMBER), l.getValue(), 0.001); p = new SVGLengthParser("0.876"); //$NON-NLS-1$ l = p.parseNumberOrPercent(); assertEquals(l.getValueAsString(), "0.876"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.NUMBER); assertEquals(UnitProcessor.INSTANCE.toUserUnit(0.876, SVGLength.LengthType.NUMBER), l.getValue(), 0.001); } @Test public void testParseCoordinate() throws ParseException { SVGLengthParser p; SVGLength l; try { p = new SVGLengthParser(""); //$NON-NLS-1$ l = p.parseCoordinate(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1m"); //$NON-NLS-1$ l = p.parseCoordinate(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("m"); //$NON-NLS-1$ l = p.parseCoordinate(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1p"); //$NON-NLS-1$ l = p.parseCoordinate(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1e1i"); //$NON-NLS-1$ l = p.parseCoordinate(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1ci"); //$NON-NLS-1$ l = p.parseCoordinate(); fail(); }catch(ParseException e) { /* */ } try { p = new SVGLengthParser("1 c "); //$NON-NLS-1$ l = p.parseCoordinate(); fail(); }catch(ParseException e) { /* */ } p = new SVGLengthParser("1mm"); //$NON-NLS-1$ l = p.parseCoordinate(); assertEquals(l.getValueAsString(), "1"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(1, SVGLength.LengthType.MM), l.getValue(), 0.001); p = new SVGLengthParser("0.65 cm"); //$NON-NLS-1$ l = p.parseCoordinate(); assertEquals(l.getValueAsString(), "0.65"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(0.65, SVGLength.LengthType.CM), l.getValue(), 0.001); p = new SVGLengthParser("\t -10.65 \t \n pc"); //$NON-NLS-1$ l = p.parseCoordinate(); assertEquals(l.getValueAsString(), "-10.65"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-10.65, SVGLength.LengthType.PC), l.getValue(), 0.001); p = new SVGLengthParser("\t -10.65e2 \t \n px \t "); //$NON-NLS-1$ l = p.parseCoordinate(); assertEquals(l.getValueAsString(), "-10.65e2"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-10.65e2, SVGLength.LengthType.PX), l.getValue(), 0.001); p = new SVGLengthParser("\t -10.65e0pt \t "); //$NON-NLS-1$ l = p.parseCoordinate(); assertEquals(l.getValueAsString(), "-10.65e0"); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-10.65e0, SVGLength.LengthType.PT), l.getValue(), 0.001); p = new SVGLengthParser("\t -1.in \t "); //$NON-NLS-1$ l = p.parseCoordinate(); assertEquals(l.getValueAsString(), "-1."); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-1., SVGLength.LengthType.IN), l.getValue(), 0.001); p = new SVGLengthParser("-1."); //$NON-NLS-1$ l = p.parseCoordinate(); assertEquals(l.getValueAsString(), "-1."); //$NON-NLS-1$ assertEquals(l.getLengthType(), SVGLength.LengthType.PX); assertEquals(UnitProcessor.INSTANCE.toUserUnit(-1., SVGLength.LengthType.NUMBER), l.getValue(), 0.001); } }