Files
enviPy-bayer/static/js/ketcher2/node_modules/svg-pathdata/tests/relabs.mocha.js
2025-06-23 20:13:54 +02:00

566 lines
23 KiB
JavaScript

var assert = (
global && global.chai
? global.chai.assert
: require('chai').assert
)
, SVGPathData = (
global && global.SVGPathData
? global.SVGPathData
: require(__dirname + '/../src/SVGPathData.js')
)
;
describe("Converting relative commands to absolute ones", function() {
it("should work with m commands", function() {
var commands = new SVGPathData('m-100,100M10,10m10,10m-1,-1').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.MOVE_TO);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.MOVE_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].x, 10);
assert.equal(commands[1].y, 10);
assert.equal(commands[2].type, SVGPathData.MOVE_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].x, 20);
assert.equal(commands[2].y, 20);
assert.equal(commands[3].type, SVGPathData.MOVE_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].x, 19);
assert.equal(commands[3].y, 19);
});
it("should work with h commands", function() {
var commands = new SVGPathData('h100H10h10h-5').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].x, 100);
assert.equal(commands[1].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].x, 10);
assert.equal(commands[2].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].x, 20);
assert.equal(commands[3].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].x, 15);
});
it("should work with v commands", function() {
var commands = new SVGPathData('v100V10v5v5').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].y, 10);
assert.equal(commands[2].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].y, 15);
assert.equal(commands[3].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].y, 20);
});
it("should work with l commands", function() {
var commands = new SVGPathData('l100,-100L1,0l2,2l-1,-1').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.LINE_TO);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].x, 100);
assert.equal(commands[0].y, -100);
assert.equal(commands[1].type, SVGPathData.LINE_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].x, 1);
assert.equal(commands[1].y, 0);
assert.equal(commands[2].type, SVGPathData.LINE_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].x, 3);
assert.equal(commands[2].y, 2);
assert.equal(commands[3].type, SVGPathData.LINE_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].x, 2);
assert.equal(commands[3].y, 1);
});
it("should work with c commands", function() {
var commands = new SVGPathData('c100,100 100,100 100,100\
c100,100 100,100 100,100\
c100,100 100,100 100,100\
c100,100 100,100 100,100').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.CURVE_TO);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].x, 100);
assert.equal(commands[0].y, 100);
assert.equal(commands[0].x1, 100);
assert.equal(commands[0].y1, 100);
assert.equal(commands[0].x2, 100);
assert.equal(commands[0].y2, 100);
assert.equal(commands[1].type, SVGPathData.CURVE_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].x, 200);
assert.equal(commands[1].y, 200);
assert.equal(commands[1].x1, 200);
assert.equal(commands[1].y1, 200);
assert.equal(commands[1].x2, 200);
assert.equal(commands[1].y2, 200);
assert.equal(commands[2].type, SVGPathData.CURVE_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].x, 300);
assert.equal(commands[2].y, 300);
assert.equal(commands[2].x1, 300);
assert.equal(commands[2].y1, 300);
assert.equal(commands[2].x2, 300);
assert.equal(commands[2].y2, 300);
assert.equal(commands[3].type, SVGPathData.CURVE_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].x, 400);
assert.equal(commands[3].y, 400);
assert.equal(commands[3].x1, 400);
assert.equal(commands[3].y1, 400);
assert.equal(commands[3].x2, 400);
assert.equal(commands[3].y2, 400);
});
it("should work with s commands", function() {
var commands = new SVGPathData('s100,100 100,100\
s100,100 100,100s100,100 100,100s100,100 100,100').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.SMOOTH_CURVE_TO);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].x, 100);
assert.equal(commands[0].y, 100);
assert.equal(commands[0].x2, 100);
assert.equal(commands[0].y2, 100);
assert.equal(commands[1].type, SVGPathData.SMOOTH_CURVE_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].x, 200);
assert.equal(commands[1].y, 200);
assert.equal(commands[1].x2, 200);
assert.equal(commands[1].y2, 200);
assert.equal(commands[2].type, SVGPathData.SMOOTH_CURVE_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].x, 300);
assert.equal(commands[2].y, 300);
assert.equal(commands[2].x2, 300);
assert.equal(commands[2].y2, 300);
assert.equal(commands[3].type, SVGPathData.SMOOTH_CURVE_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].x, 400);
assert.equal(commands[3].y, 400);
assert.equal(commands[3].x2, 400);
assert.equal(commands[3].y2, 400);
});
it("should work with q commands", function() {
var commands = new SVGPathData('q-100,100 -100,100q-100,100 -100,100\
q-100,100 -100,100q-100,100 -100,100').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.QUAD_TO);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[0].x1, -100);
assert.equal(commands[0].y1, 100);
assert.equal(commands[1].type, SVGPathData.QUAD_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].x, -200);
assert.equal(commands[1].y, 200);
assert.equal(commands[1].x1, -200);
assert.equal(commands[1].y1, 200);
assert.equal(commands[2].type, SVGPathData.QUAD_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].x, -300);
assert.equal(commands[2].y, 300);
assert.equal(commands[2].x1, -300);
assert.equal(commands[2].y1, 300);
assert.equal(commands[3].type, SVGPathData.QUAD_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].x, -400);
assert.equal(commands[3].y, 400);
assert.equal(commands[3].x1, -400);
assert.equal(commands[3].y1, 400);
});
it("should work with t commands", function() {
var commands = new SVGPathData('t-100,100t-100,100t10,10t10,10').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.SMOOTH_QUAD_TO);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.SMOOTH_QUAD_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].x, -200);
assert.equal(commands[1].y, 200);
assert.equal(commands[2].type, SVGPathData.SMOOTH_QUAD_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].x, -190);
assert.equal(commands[2].y, 210);
assert.equal(commands[3].type, SVGPathData.SMOOTH_QUAD_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].x, -180);
assert.equal(commands[3].y, 220);
});
it("should work with a commands", function() {
var commands = new SVGPathData('a20,20 180 1 0 -100,100\
a20,20 180 1 0 -100,100a20,20 180 1 0 -100,100\
a20,20 180 1 0 -100,100').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.ARC);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].rX, 20);
assert.equal(commands[0].rY, 20);
assert.equal(commands[0].xRot, 180);
assert.equal(commands[0].lArcFlag, 1);
assert.equal(commands[0].sweepFlag, 0);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.ARC);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].rX, 20);
assert.equal(commands[1].rY, 20);
assert.equal(commands[1].xRot, 180);
assert.equal(commands[1].lArcFlag, 1);
assert.equal(commands[1].sweepFlag, 0);
assert.equal(commands[1].x, -200);
assert.equal(commands[1].y, 200);
assert.equal(commands[2].type, SVGPathData.ARC);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].rX, 20);
assert.equal(commands[2].rY, 20);
assert.equal(commands[2].xRot, 180);
assert.equal(commands[2].lArcFlag, 1);
assert.equal(commands[2].sweepFlag, 0);
assert.equal(commands[2].x, -300);
assert.equal(commands[2].y, 300);
assert.equal(commands[3].type, SVGPathData.ARC);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].rX, 20);
assert.equal(commands[3].rY, 20);
assert.equal(commands[3].xRot, 180);
assert.equal(commands[3].lArcFlag, 1);
assert.equal(commands[3].sweepFlag, 0);
assert.equal(commands[3].x, -400);
assert.equal(commands[3].y, 400);
});
it("should work with nested commands", function() {
var commands = new SVGPathData('a20,20 180 1 0 -100,100h10v10l10,10\
c10,10 20,20 100,100').toAbs().commands;
assert.equal(commands[0].type, SVGPathData.ARC);
assert.equal(commands[0].relative, false);
assert.equal(commands[0].rX, 20);
assert.equal(commands[0].rY, 20);
assert.equal(commands[0].xRot, 180);
assert.equal(commands[0].lArcFlag, 1);
assert.equal(commands[0].sweepFlag, 0);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[1].relative, false);
assert.equal(commands[1].x, -90);
assert.equal(commands[2].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[2].relative, false);
assert.equal(commands[2].y, 110);
assert.equal(commands[3].type, SVGPathData.LINE_TO);
assert.equal(commands[3].relative, false);
assert.equal(commands[3].x, -80);
assert.equal(commands[3].y, 120);
assert.equal(commands[4].type, SVGPathData.CURVE_TO);
assert.equal(commands[4].relative, false);
assert.equal(commands[4].x, 20);
assert.equal(commands[4].y, 220);
assert.equal(commands[4].x1, -60);
assert.equal(commands[4].y1, 140);
assert.equal(commands[4].x2, -70);
assert.equal(commands[4].y2, 130);
});
});
describe("Converting absolute commands to relative ones", function() {
it("should work with M commands", function() {
var commands = new SVGPathData('M100,100M110,90M120,80M130,70').toRel().commands;
assert.equal(commands[0].type, SVGPathData.MOVE_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].x, 100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.MOVE_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, 10);
assert.equal(commands[1].y, -10);
assert.equal(commands[2].type, SVGPathData.MOVE_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].x, 10);
assert.equal(commands[2].y, -10);
assert.equal(commands[3].type, SVGPathData.MOVE_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, 10);
assert.equal(commands[3].y, -10);
});
it("should work with M commands", function() {
var commands = new SVGPathData('M-100,100m90,-90M20,20M19,19').toRel().commands;
assert.equal(commands[0].type, SVGPathData.MOVE_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.MOVE_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, 90);
assert.equal(commands[1].y, -90);
assert.equal(commands[2].type, SVGPathData.MOVE_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].x, 30);
assert.equal(commands[2].y, 10);
assert.equal(commands[3].type, SVGPathData.MOVE_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, -1);
assert.equal(commands[3].y, -1);
});
it("should work with H commands", function() {
var commands = new SVGPathData('H100H10H20H15').toRel().commands;
assert.equal(commands[0].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].x, 100);
assert.equal(commands[1].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, -90);
assert.equal(commands[2].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].x, 10);
assert.equal(commands[3].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, -5);
});
it("should work with V commands", function() {
var commands = new SVGPathData('V100V10V15V20').toRel().commands;
assert.equal(commands[0].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].y, -90);
assert.equal(commands[2].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].y, 5);
assert.equal(commands[3].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].y, 5);
});
it("should work with L commands", function() {
var commands = new SVGPathData('L100,-100L1,0L3,2L2,1').toRel().commands;
assert.equal(commands[0].type, SVGPathData.LINE_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].x, 100);
assert.equal(commands[0].y, -100);
assert.equal(commands[1].type, SVGPathData.LINE_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, -99);
assert.equal(commands[1].y, 100);
assert.equal(commands[2].type, SVGPathData.LINE_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].x, 2);
assert.equal(commands[2].y, 2);
assert.equal(commands[3].type, SVGPathData.LINE_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, -1);
assert.equal(commands[3].y, -1);
});
it("should work with C commands", function() {
var commands = new SVGPathData('C100,100 100,100 100,100\
C200,200 200,200 200,200\
C300,300 300,300 300,300\
C400,400 400,400 400,400').toRel().commands;
assert.equal(commands[0].type, SVGPathData.CURVE_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].x, 100);
assert.equal(commands[0].y, 100);
assert.equal(commands[0].x1, 100);
assert.equal(commands[0].y1, 100);
assert.equal(commands[0].x2, 100);
assert.equal(commands[0].y2, 100);
assert.equal(commands[1].type, SVGPathData.CURVE_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, 100);
assert.equal(commands[1].y, 100);
assert.equal(commands[1].x1, 100);
assert.equal(commands[1].y1, 100);
assert.equal(commands[1].x2, 100);
assert.equal(commands[1].y2, 100);
assert.equal(commands[2].type, SVGPathData.CURVE_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].x, 100);
assert.equal(commands[2].y, 100);
assert.equal(commands[2].x1, 100);
assert.equal(commands[2].y1, 100);
assert.equal(commands[2].x2, 100);
assert.equal(commands[2].y2, 100);
assert.equal(commands[3].type, SVGPathData.CURVE_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, 100);
assert.equal(commands[3].y, 100);
assert.equal(commands[3].x1, 100);
assert.equal(commands[3].y1, 100);
assert.equal(commands[3].x2, 100);
assert.equal(commands[3].y2, 100);
});
it("should work with S commands", function() {
var commands = new SVGPathData('S100,100 100,100\
S200,200 200,200S300,300 300,300S400,400 400,400').toRel().commands;
assert.equal(commands[0].type, SVGPathData.SMOOTH_CURVE_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].x, 100);
assert.equal(commands[0].y, 100);
assert.equal(commands[0].x2, 100);
assert.equal(commands[0].y2, 100);
assert.equal(commands[1].type, SVGPathData.SMOOTH_CURVE_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, 100);
assert.equal(commands[1].y, 100);
assert.equal(commands[1].x2, 100);
assert.equal(commands[1].y2, 100);
assert.equal(commands[2].type, SVGPathData.SMOOTH_CURVE_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].x, 100);
assert.equal(commands[2].y, 100);
assert.equal(commands[2].x2, 100);
assert.equal(commands[2].y2, 100);
assert.equal(commands[3].type, SVGPathData.SMOOTH_CURVE_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, 100);
assert.equal(commands[3].y, 100);
assert.equal(commands[3].x2, 100);
assert.equal(commands[3].y2, 100);
});
it("should work with Q commands", function() {
var commands = new SVGPathData('Q-100,100 -100,100Q-200,200 -200,200\
Q-300,300 -300,300Q-400,400 -400,400').toRel().commands;
assert.equal(commands[0].type, SVGPathData.QUAD_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[0].x1, -100);
assert.equal(commands[0].y1, 100);
assert.equal(commands[1].type, SVGPathData.QUAD_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, -100);
assert.equal(commands[1].y, 100);
assert.equal(commands[1].x1, -100);
assert.equal(commands[1].y1, 100);
assert.equal(commands[2].type, SVGPathData.QUAD_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].x, -100);
assert.equal(commands[2].y, 100);
assert.equal(commands[2].x1, -100);
assert.equal(commands[2].y1, 100);
assert.equal(commands[3].type, SVGPathData.QUAD_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, -100);
assert.equal(commands[3].y, 100);
assert.equal(commands[3].x1, -100);
assert.equal(commands[3].y1, 100);
});
it("should work with T commands", function() {
var commands = new SVGPathData('T-100,100T-200,200T-190,210T-180,220').toRel().commands;
assert.equal(commands[0].type, SVGPathData.SMOOTH_QUAD_TO);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.SMOOTH_QUAD_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, -100);
assert.equal(commands[1].y, 100);
assert.equal(commands[2].type, SVGPathData.SMOOTH_QUAD_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].x, 10);
assert.equal(commands[2].y, 10);
assert.equal(commands[3].type, SVGPathData.SMOOTH_QUAD_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, 10);
assert.equal(commands[3].y, 10);
});
it("should work with A commands", function() {
var commands = new SVGPathData('A20,20 180 1 0 -100,100\
A20,20 180 1 0 -200,200A20,20 180 1 0 -300,300\
A20,20 180 1 0 -400,400').toRel().commands;
assert.equal(commands[0].type, SVGPathData.ARC);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].rX, 20);
assert.equal(commands[0].rY, 20);
assert.equal(commands[0].xRot, 180);
assert.equal(commands[0].lArcFlag, 1);
assert.equal(commands[0].sweepFlag, 0);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.ARC);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].rX, 20);
assert.equal(commands[1].rY, 20);
assert.equal(commands[1].xRot, 180);
assert.equal(commands[1].lArcFlag, 1);
assert.equal(commands[1].sweepFlag, 0);
assert.equal(commands[1].x, -100);
assert.equal(commands[1].y, 100);
assert.equal(commands[2].type, SVGPathData.ARC);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].rX, 20);
assert.equal(commands[2].rY, 20);
assert.equal(commands[2].xRot, 180);
assert.equal(commands[2].lArcFlag, 1);
assert.equal(commands[2].sweepFlag, 0);
assert.equal(commands[2].x, -100);
assert.equal(commands[2].y, 100);
assert.equal(commands[3].type, SVGPathData.ARC);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].rX, 20);
assert.equal(commands[3].rY, 20);
assert.equal(commands[3].xRot, 180);
assert.equal(commands[3].lArcFlag, 1);
assert.equal(commands[3].sweepFlag, 0);
assert.equal(commands[3].x, -100);
assert.equal(commands[3].y, 100);
});
it("should work with nested commands", function() {
var commands = new SVGPathData('A20,20 180 1 0 -100,100H-90V110L20,220\
C10,10 20,20 20,220').toRel().commands;
assert.equal(commands[0].type, SVGPathData.ARC);
assert.equal(commands[0].relative, true);
assert.equal(commands[0].rX, 20);
assert.equal(commands[0].rY, 20);
assert.equal(commands[0].xRot, 180);
assert.equal(commands[0].lArcFlag, 1);
assert.equal(commands[0].sweepFlag, 0);
assert.equal(commands[0].x, -100);
assert.equal(commands[0].y, 100);
assert.equal(commands[1].type, SVGPathData.HORIZ_LINE_TO);
assert.equal(commands[1].relative, true);
assert.equal(commands[1].x, 10);
assert.equal(commands[2].type, SVGPathData.VERT_LINE_TO);
assert.equal(commands[2].relative, true);
assert.equal(commands[2].y, 10);
assert.equal(commands[3].type, SVGPathData.LINE_TO);
assert.equal(commands[3].relative, true);
assert.equal(commands[3].x, 110);
assert.equal(commands[3].y, 110);
assert.equal(commands[4].type, SVGPathData.CURVE_TO);
assert.equal(commands[4].relative, true);
assert.equal(commands[4].x, 0);
assert.equal(commands[4].y, 0);
assert.equal(commands[4].x1, 0);
assert.equal(commands[4].y1, -200);
assert.equal(commands[4].x2, -10);
assert.equal(commands[4].y2, -210);
});
});