package test.parser.pst;
import static org.junit.Assert.*;
import java.text.ParseException;
import net.sf.latexdraw.models.interfaces.shape.ArrowStyle;
import net.sf.latexdraw.models.interfaces.shape.IBezierCurve;
import net.sf.latexdraw.models.interfaces.shape.IShape;
import net.sf.latexdraw.parsers.pst.parser.PSTParser;
import org.junit.Test;
public class TestParsingPSbezier extends TestParsingShape {
@Test
public void testSimpleBezierCurveOpen() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser
.parsePSTCode(
"\\psbezier[linecolor=black, linewidth=0.04](0.014142151,-1.4747834)(0.7212489,-2.1818902)(4.9070354,-1.3818903)(5.614142,-0.6747834777832031)(6.321249,0.032323305)(4.2040915,1.8666378)(3.214142,1.7252165)") //$NON-NLS-1$
.get().getShapeAt(0);
assertTrue(PSTParser.errorLogs().isEmpty());
assertFalse(bc.isClosed());
}
@Test
public void testSimpleBezierCurveClose() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser
.parsePSTCode(
"\\psbezier[linecolor=black, linewidth=0.04](0.10361466,-0.36860093)(0.76211923,-1.1211777)(7.561873,-1.9049373)(8.503614,-1.5686009216308594)(9.445356,-1.2322645)(6.693564,1.4899777)(5.7036147,1.631399)(4.713665,1.7728205)(-0.55489,0.38397577)(0.10361466,-0.36860093)") //$NON-NLS-1$
.get().getShapeAt(0);
assertTrue(PSTParser.errorLogs().isEmpty());
assertTrue(bc.isClosed());
}
@Test
public void testSimpleBezierCurve() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser.parsePSTCode("\\psbezier[linewidth=0.02](1.3918242,0.7584497)(2.0668242,0.95844966)(4.3168244,0.95844966)(4.991824,0.7584497)").get().getShapeAt(0); //$NON-NLS-1$
assertTrue(PSTParser.errorLogs().isEmpty());
assertEquals(bc.getPtAt(0).getY(), bc.getPtAt(1).getY(), 0.001);
assertEquals(bc.getFirstCtrlPtAt(0).getY(), bc.getFirstCtrlPtAt(1).getY(), 0.001);
assertFalse(bc.isFilled());
}
@Test
public void testParamArrowsArrowsNoneNone() throws ParseException {
IBezierCurve line = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "[arrows=<->]{-}(1,2)(3,4)(5,6)(7,8)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(ArrowStyle.NONE, line.getArrowStyle(0));
assertEquals(ArrowStyle.NONE, line.getArrowStyle(1));
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Test
public void testParamBarInSqureBracket() throws ParseException {
IBezierCurve line = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "{|-]}(1,2)(3,4)(5,6)(7,8)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(ArrowStyle.BAR_IN, line.getArrowStyle(0));
assertEquals(ArrowStyle.RIGHT_SQUARE_BRACKET, line.getArrowStyle(1));
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Test
public void testParamArrowsArrows() throws ParseException {
IBezierCurve line = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "[arrows=<->](1,2)(3,4)(5,6)(7,8)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(ArrowStyle.LEFT_ARROW, line.getArrowStyle(0));
assertEquals(ArrowStyle.RIGHT_ARROW, line.getArrowStyle(1));
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Test
public void test9Coordinates() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "(1,2)(3,4)(5,6)(7,8)(9,10)(11,12)(13,14)(15,16)(17,18)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(4, bc.getNbPoints());
assertEquals(0., bc.getPtAt(0).getX(), 0.0001);
assertEquals(0., bc.getPtAt(0).getY(), 0.0001);
assertEquals(5. * IShape.PPC, bc.getPtAt(1).getX(), 0.0001);
assertEquals(-6. * IShape.PPC, bc.getPtAt(1).getY(), 0.0001);
assertEquals(11. * IShape.PPC, bc.getPtAt(2).getX(), 0.0001);
assertEquals(-12. * IShape.PPC, bc.getPtAt(2).getY(), 0.0001);
assertEquals(17. * IShape.PPC, bc.getPtAt(3).getX(), 0.0001);
assertEquals(-18. * IShape.PPC, bc.getPtAt(3).getY(), 0.0001);
assertEquals(-1. * IShape.PPC, bc.getSecondCtrlPtAt(0).getX(), 0.0001);
assertEquals(2. * IShape.PPC, bc.getSecondCtrlPtAt(0).getY(), 0.0001);
assertEquals(7. * IShape.PPC, bc.getSecondCtrlPtAt(1).getX(), 0.0001);
assertEquals(-8. * IShape.PPC, bc.getSecondCtrlPtAt(1).getY(), 0.0001);
assertEquals(13. * IShape.PPC, bc.getSecondCtrlPtAt(2).getX(), 0.0001);
assertEquals(-14. * IShape.PPC, bc.getSecondCtrlPtAt(2).getY(), 0.0001);
assertEquals(3. * IShape.PPC, bc.getFirstCtrlPtAt(1).getX(), 0.0001);
assertEquals(-4. * IShape.PPC, bc.getFirstCtrlPtAt(1).getY(), 0.0001);
assertEquals(9. * IShape.PPC, bc.getFirstCtrlPtAt(2).getX(), 0.0001);
assertEquals(-10. * IShape.PPC, bc.getFirstCtrlPtAt(2).getY(), 0.0001);
assertEquals(15. * IShape.PPC, bc.getFirstCtrlPtAt(3).getX(), 0.0001);
assertEquals(-16. * IShape.PPC, bc.getFirstCtrlPtAt(3).getY(), 0.0001);
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Test
public void test10Coordinates() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "(5,10)(1,2)(3,4)(5,6)(7,8)(9,10)(11,12)(13,14)(15,16)(17,18)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(4, bc.getNbPoints());
assertEquals(5. * IShape.PPC, bc.getPtAt(0).getX(), 0.0001);
assertEquals(-10. * IShape.PPC, bc.getPtAt(0).getY(), 0.0001);
assertEquals(5. * IShape.PPC, bc.getPtAt(1).getX(), 0.0001);
assertEquals(-6. * IShape.PPC, bc.getPtAt(1).getY(), 0.0001);
assertEquals(11. * IShape.PPC, bc.getPtAt(2).getX(), 0.0001);
assertEquals(-12. * IShape.PPC, bc.getPtAt(2).getY(), 0.0001);
assertEquals(17. * IShape.PPC, bc.getPtAt(3).getX(), 0.0001);
assertEquals(-18. * IShape.PPC, bc.getPtAt(3).getY(), 0.0001);
assertEquals(9. * IShape.PPC, bc.getSecondCtrlPtAt(0).getX(), 0.0001);
assertEquals(-18. * IShape.PPC, bc.getSecondCtrlPtAt(0).getY(), 0.0001);
assertEquals(7. * IShape.PPC, bc.getSecondCtrlPtAt(1).getX(), 0.0001);
assertEquals(-8. * IShape.PPC, bc.getSecondCtrlPtAt(1).getY(), 0.0001);
assertEquals(13. * IShape.PPC, bc.getSecondCtrlPtAt(2).getX(), 0.0001);
assertEquals(-14. * IShape.PPC, bc.getSecondCtrlPtAt(2).getY(), 0.0001);
assertEquals(3. * IShape.PPC, bc.getFirstCtrlPtAt(1).getX(), 0.0001);
assertEquals(-4. * IShape.PPC, bc.getFirstCtrlPtAt(1).getY(), 0.0001);
assertEquals(9. * IShape.PPC, bc.getFirstCtrlPtAt(2).getX(), 0.0001);
assertEquals(-10. * IShape.PPC, bc.getFirstCtrlPtAt(2).getY(), 0.0001);
assertEquals(15. * IShape.PPC, bc.getFirstCtrlPtAt(3).getX(), 0.0001);
assertEquals(-16. * IShape.PPC, bc.getFirstCtrlPtAt(3).getY(), 0.0001);
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Test
public void test6Coordinates() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "(1,2)(3,4)(5,6)(7,8)(9,10)(11,12)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(3, bc.getNbPoints());
assertEquals(0., bc.getPtAt(0).getX(), 0.0001);
assertEquals(0., bc.getPtAt(0).getY(), 0.0001);
assertEquals(5. * IShape.PPC, bc.getPtAt(1).getX(), 0.0001);
assertEquals(-6. * IShape.PPC, bc.getPtAt(1).getY(), 0.0001);
assertEquals(11. * IShape.PPC, bc.getPtAt(2).getX(), 0.0001);
assertEquals(-12. * IShape.PPC, bc.getPtAt(2).getY(), 0.0001);
assertEquals(-1. * IShape.PPC, bc.getSecondCtrlPtAt(0).getX(), 0.0001);
assertEquals(2. * IShape.PPC, bc.getSecondCtrlPtAt(0).getY(), 0.0001);
assertEquals(7. * IShape.PPC, bc.getSecondCtrlPtAt(1).getX(), 0.0001);
assertEquals(-8. * IShape.PPC, bc.getSecondCtrlPtAt(1).getY(), 0.0001);
assertEquals(3. * IShape.PPC, bc.getFirstCtrlPtAt(1).getX(), 0.0001);
assertEquals(-4. * IShape.PPC, bc.getFirstCtrlPtAt(1).getY(), 0.0001);
assertEquals(9. * IShape.PPC, bc.getFirstCtrlPtAt(2).getX(), 0.0001);
assertEquals(-10. * IShape.PPC, bc.getFirstCtrlPtAt(2).getY(), 0.0001);
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Test
public void test7Coordinates() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "(5,10)(1,2)(3,4)(5,6)(7,8)(9,10)(11,12)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(3, bc.getNbPoints());
assertEquals(5. * IShape.PPC, bc.getPtAt(0).getX(), 0.0001);
assertEquals(-10. * IShape.PPC, bc.getPtAt(0).getY(), 0.0001);
assertEquals(5. * IShape.PPC, bc.getPtAt(1).getX(), 0.0001);
assertEquals(-6. * IShape.PPC, bc.getPtAt(1).getY(), 0.0001);
assertEquals(11. * IShape.PPC, bc.getPtAt(2).getX(), 0.0001);
assertEquals(-12. * IShape.PPC, bc.getPtAt(2).getY(), 0.0001);
assertEquals(9. * IShape.PPC, bc.getSecondCtrlPtAt(0).getX(), 0.0001);
assertEquals(-18. * IShape.PPC, bc.getSecondCtrlPtAt(0).getY(), 0.0001);
assertEquals(7. * IShape.PPC, bc.getSecondCtrlPtAt(1).getX(), 0.0001);
assertEquals(-8. * IShape.PPC, bc.getSecondCtrlPtAt(1).getY(), 0.0001);
assertEquals(3. * IShape.PPC, bc.getFirstCtrlPtAt(1).getX(), 0.0001);
assertEquals(-4. * IShape.PPC, bc.getFirstCtrlPtAt(1).getY(), 0.0001);
assertEquals(9. * IShape.PPC, bc.getFirstCtrlPtAt(2).getX(), 0.0001);
assertEquals(-10. * IShape.PPC, bc.getFirstCtrlPtAt(2).getY(), 0.0001);
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Test
public void test3Coordinates() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "(1,2)(3,4)(5,6)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(2, bc.getNbPoints());
assertEquals(0., bc.getPtAt(0).getX(), 0.0001);
assertEquals(0., bc.getPtAt(0).getY(), 0.0001);
assertEquals(5. * IShape.PPC, bc.getPtAt(1).getX(), 0.0001);
assertEquals(-6. * IShape.PPC, bc.getPtAt(1).getY(), 0.0001);
assertEquals(-1. * IShape.PPC, bc.getSecondCtrlPtAt(0).getX(), 0.0001);
assertEquals(2. * IShape.PPC, bc.getSecondCtrlPtAt(0).getY(), 0.0001);
assertEquals(3. * IShape.PPC, bc.getFirstCtrlPtAt(1).getX(), 0.0001);
assertEquals(-4. * IShape.PPC, bc.getFirstCtrlPtAt(1).getY(), 0.0001);
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Test
public void test4Coordinates() throws ParseException {
IBezierCurve bc = (IBezierCurve)parser.parsePSTCode("\\" + getCommandName() + "(5,10)(1,2)(3,4)(5,6)").get().getShapeAt(0); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(2, bc.getNbPoints());
assertEquals(5. * IShape.PPC, bc.getPtAt(0).getX(), 0.0001);
assertEquals(-10. * IShape.PPC, bc.getPtAt(0).getY(), 0.0001);
assertEquals(5. * IShape.PPC, bc.getPtAt(1).getX(), 0.0001);
assertEquals(-6. * IShape.PPC, bc.getPtAt(1).getY(), 0.0001);
assertEquals(9. * IShape.PPC, bc.getSecondCtrlPtAt(0).getX(), 0.0001);
assertEquals(-18. * IShape.PPC, bc.getSecondCtrlPtAt(0).getY(), 0.0001);
assertEquals(3. * IShape.PPC, bc.getFirstCtrlPtAt(1).getX(), 0.0001);
assertEquals(-4. * IShape.PPC, bc.getFirstCtrlPtAt(1).getY(), 0.0001);
assertTrue(PSTParser.errorLogs().isEmpty());
}
@Override
public String getCommandName() {
return "psbezier"; //$NON-NLS-1$
}
@Override
public String getBasicCoordinates() {
return "(0,0)(1,1)(2,2)(3,3)"; //$NON-NLS-1$
}
}