package test.svg; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.awt.geom.Point2D; import net.sf.latexdraw.parsers.svg.SVGMatrix; import net.sf.latexdraw.parsers.svg.SVGTransformList; import org.junit.Test; public class TestSVGTransformList { @Test public void testContructors() { SVGTransformList t = new SVGTransformList(); assertTrue(t.isEmpty()); t = new SVGTransformList(null); assertTrue(t.isEmpty()); t = new SVGTransformList(""); //$NON-NLS-1$ assertTrue(t.isEmpty()); t = new SVGTransformList("translate(2,2)"); //$NON-NLS-1$ assertFalse(t.isEmpty()); } @Test public void testAddTransformations() { SVGTransformList t = new SVGTransformList(); t.addTransformations(null); assertTrue(t.isEmpty()); t.addTransformations(""); //$NON-NLS-1$ assertTrue(t.isEmpty()); t.addTransformations("dsqdsq"); //$NON-NLS-1$ assertTrue(t.isEmpty()); t.addTransformations("translate"); //$NON-NLS-1$ assertTrue(t.isEmpty()); t.addTransformations("translate(,)"); //$NON-NLS-1$ assertTrue(t.isEmpty()); t.addTransformations("translate( )"); //$NON-NLS-1$ assertTrue(t.isEmpty()); t.addTransformations("scale( 3"); //$NON-NLS-1$ assertTrue(t.isEmpty()); t.addTransformations("rotate(a)"); //$NON-NLS-1$ assertTrue(t.isEmpty()); t.addTransformations("rotate(1)"); //$NON-NLS-1$ assertFalse(t.isEmpty()); t.clear(); t.addTransformations("rotate(1 , 2 4)"); //$NON-NLS-1$ assertFalse(t.isEmpty()); t.clear(); t.addTransformations("skewY( 1)"); //$NON-NLS-1$ assertFalse(t.isEmpty()); t.clear(); t.addTransformations("skewX(1)"); //$NON-NLS-1$ assertFalse(t.isEmpty()); t.clear(); t.addTransformations("scale(1 1)"); //$NON-NLS-1$ assertFalse(t.isEmpty()); t.clear(); t.addTransformations("translate(1 ,1)"); //$NON-NLS-1$ assertFalse(t.isEmpty()); t.clear(); t.addTransformations("translate(1 1) ,"); //$NON-NLS-1$ assertFalse(t.isEmpty()); t.clear(); t.addTransformations("matrix(1 2 3)"); //$NON-NLS-1$ assertTrue(t.isEmpty()); t.addTransformations("matrix(1 2 3 ,4 ,5 ,6)"); //$NON-NLS-1$ assertFalse(t.isEmpty()); t.clear(); t.addTransformations("matrix(1 2 3 ,4 ,5 ,6) translate(2 2)"); //$NON-NLS-1$ assertEquals(2, t.size()); t.clear(); t.addTransformations("rotate ( 2, 3 5), \n skewX( 2 \n)"); //$NON-NLS-1$ assertEquals(2, t.size()); t.clear(); t.addTransformations("rotate ( 2, 3 5)scale( 2)"); //$NON-NLS-1$ assertEquals(2, t.size()); t.clear(); t.addTransformations("rotate ( 2, 3 5), \n skewX( 2 \n)"); //$NON-NLS-1$ t.addTransformations("rotate ( 2, 3 5)scale( 2)"); //$NON-NLS-1$ assertEquals(4, t.size()); } @Test public void testTransformPoint() { SVGTransformList t = new SVGTransformList(); Point2D pt1 = new Point2D.Double(1, 1); Point2D pt2 = new Point2D.Double(3, 4); Point2D pt3; t.addTransformations("translate( 2 3)"); //$NON-NLS-1$ assertEquals(t.transformPoint(pt1), pt2); t.addTransformations("translate( -2 -3)"); //$NON-NLS-1$ t.addTransformations("rotate(90)"); //$NON-NLS-1$ pt2.setLocation(0, 1); pt1.setLocation(1, 0); pt3 = t.transformPoint(pt1); assertEquals(Math.rint(pt3.getX()), pt2.getX(), 0.0001); assertEquals(Math.rint(pt3.getY()), pt2.getY(), 0.0001); } @Test public void testGetGlobalTransformation() { SVGTransformList t = new SVGTransformList(); SVGMatrix m; m = t.getGlobalTransformationMatrix(); assertNull(m); t.addTransformations("scale( 2 3)"); //$NON-NLS-1$ m = t.getGlobalTransformationMatrix(); assertEquals(m.getA(), 2., 0.0001); assertEquals(m.getB(), 0., 0.0001); assertEquals(m.getC(), 0., 0.0001); assertEquals(m.getD(), 3., 0.0001); assertEquals(m.getE(), 0., 0.0001); assertEquals(m.getF(), 0., 0.0001); t.addTransformations("skewX( 0.5 \n)"); //$NON-NLS-1$ m = t.getGlobalTransformationMatrix(); assertEquals(m.getA(), 2., 0.0001); assertEquals(m.getB(), 0., 0.0001); assertEquals(m.getC(), 2. * Math.tan(Math.toRadians(0.5)), 0.0001); assertEquals(m.getD(), 3., 0.0001); assertEquals(m.getE(), 0., 0.0001); assertEquals(m.getF(), 0., 0.0001); } }