package com.xenoage.zong.io.symbols;
import static com.xenoage.utils.collections.CollectionUtils.alist;
import static com.xenoage.utils.math.geom.Point2f.p;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.xenoage.zong.symbols.path.ClosePath;
import com.xenoage.zong.symbols.path.LineTo;
import com.xenoage.zong.symbols.path.MoveTo;
import com.xenoage.zong.symbols.path.Path;
/**
* Tests for {@link SvgPathReader}.
*
* @author Andreas Wenger
*/
public class SvgPathReaderTest {
@Test public void test1() {
String validPath = "M 1100 1100 L 1300 1100 L 1200 1300 z";
Path p = new SvgPathReader(validPath).read();
assertEquals(alist(new MoveTo(p(1, 1)), new LineTo(p(3, 1)), new LineTo(p(2, 3)),
new ClosePath()), p.getElements());
}
@Test public void test2() {
String validPath = "M1200,1300 L1400,1050 L1600,1300 1800,1550 M2000,1300z";
Path p = new SvgPathReader(validPath).read();
assertEquals(alist(new MoveTo(p(2, 3)), new LineTo(p(4, 0.5f)), new LineTo(p(6, 3)),
new LineTo(p(8, 5.5f)), new MoveTo(p(10, 3)), new ClosePath()), p.getElements());
}
@Test public void testImplicitLineToAbs() {
String validPath = "M1200,1300 1400,1050 1600,1300 1800,1550 2000,1300z";
Path p = new SvgPathReader(validPath).read();
assertEquals(alist(new MoveTo(p(2, 3)), new LineTo(p(4, 0.5f)), new LineTo(p(6, 3)),
new LineTo(p(8, 5.5f)), new LineTo(p(10, 3)), new ClosePath()), p.getElements());
}
@Test public void testImplicitLineToRel() {
String validPath = "m1200,1300 100,100 z";
Path p = new SvgPathReader(validPath).read();
assertEquals(alist(new MoveTo(p(2, 3)), new LineTo(p(3, 4f)), new ClosePath()), p.getElements());
}
}