From 936a23c44c77947fc176fd55f1cda82d97c584c4 Mon Sep 17 00:00:00 2001 From: Chris Barrett Date: Sat, 20 Nov 2021 11:17:41 +0100 Subject: [PATCH] fixing issues with cutonfold and dimension tests --- .../plugin-bundle/tests/cutonfold.test.js | 2 - .../plugin-bundle/tests/dimension.test.js | 251 ++++++----- packages/plugin-cutonfold/.babelrc | 3 - packages/plugin-dimension/src/.index.js.swp | Bin 16384 -> 0 bytes .../plugin-dimension/tests/dimension.test.js | 388 ++++++++++-------- 5 files changed, 360 insertions(+), 284 deletions(-) delete mode 100644 packages/plugin-dimension/src/.index.js.swp diff --git a/packages/plugin-bundle/tests/cutonfold.test.js b/packages/plugin-bundle/tests/cutonfold.test.js index 8638ef91ff0..9b4229c226f 100644 --- a/packages/plugin-bundle/tests/cutonfold.test.js +++ b/packages/plugin-bundle/tests/cutonfold.test.js @@ -7,7 +7,6 @@ let plugin = require("../dist/index.js"); describe("plugin-cutonfold", function() { it("Should set the plugin name:version attribute", () => { let pattern = new freesewing.Pattern().use(plugin); - pattern.render(); expect(pattern.svg.attributes.get("freesewing:plugin-cutonfold")).to.equal( version ); @@ -26,7 +25,6 @@ describe("plugin-cutonfold", function() { to: pattern.parts.test.points.to }); let c = pattern.parts.test.paths.cutonfold; - console.log(c.ops); expect(c.attributes.get("class")).to.equal("note"); expect(c.attributes.get("marker-start")).to.equal("url(#cutonfoldFrom)"); expect(c.attributes.get("marker-end")).to.equal("url(#cutonfoldTo)"); diff --git a/packages/plugin-bundle/tests/dimension.test.js b/packages/plugin-bundle/tests/dimension.test.js index 84336ad590f..ba6ffb77267 100644 --- a/packages/plugin-bundle/tests/dimension.test.js +++ b/packages/plugin-bundle/tests/dimension.test.js @@ -1,10 +1,11 @@ import freesewing from "@freesewing/core"; -import { version } from "../../plugin-dimension/package.json"; +import { version } from "../package.json"; let expect = require("chai").expect; let plugin = require("../dist/index.js"); -const { Console } = require("console"); +let round = freesewing.utils.round; + +describe("The dimension plugin", function() { -describe("plugin-dimension", function() { it("Should set the plugin name:version attribute", () => { let pattern = new freesewing.Pattern().use(plugin); pattern.render(); @@ -13,7 +14,8 @@ describe("plugin-dimension", function() { ); }); - it("Should run the hd macro", () => { + describe("Measures horizontal dimensions", function() { + let pattern = new freesewing.Pattern(); pattern.draft = function() {}; pattern.use(plugin); @@ -25,38 +27,47 @@ describe("plugin-dimension", function() { from: pattern.parts.test.points.from, to: pattern.parts.test.points.to, y: 35 + }) + + it("should draw a line and add text to indicate its length", () => { + let c = pattern.parts.test.paths["__paperless1"]; + expect(c.attributes.get("class")).to.equal("mark"); + expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); + expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); + expect(c.attributes.get("data-text")).to.equal("19cm"); + expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(35); + expect(c.ops[1].to.x).to.equal(200); + expect(c.ops[1].to.y).to.equal(35); + }); + + it("should draw the start marker", () => { + let c = pattern.parts.test.paths["__paperless1_ls"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(20); + expect(c.ops[1].to.x).to.equal(10); + expect(c.ops[1].to.y).to.equal(35); + }); + + it("should draw the end marker", () => { + let c = pattern.parts.test.paths["__paperless1_le"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(200); + expect(c.ops[0].to.y).to.equal(20); + expect(c.ops[1].to.x).to.equal(200); + expect(c.ops[1].to.y).to.equal(35); }); - let c = pattern.parts.test.paths[1]; - expect(c.attributes.get("class")).to.equal("mark"); - expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); - expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); - expect(c.attributes.get("data-text")).to.equal("19cm"); - expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(35); - expect(c.ops[1].to.x).to.equal(200); - expect(c.ops[1].to.y).to.equal(35); - c = pattern.parts.test.paths["1_ls"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(20); - expect(c.ops[1].to.x).to.equal(10); - expect(c.ops[1].to.y).to.equal(35); - c = pattern.parts.test.paths["1_le"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(200); - expect(c.ops[0].to.y).to.equal(20); - expect(c.ops[1].to.x).to.equal(200); - expect(c.ops[1].to.y).to.equal(35); }); - it("Should run the vd macro", () => { + describe("Measures vertical dimensions", () => { let pattern = new freesewing.Pattern(); pattern.draft = function() {}; pattern.use(plugin); @@ -69,37 +80,46 @@ describe("plugin-dimension", function() { to: pattern.parts.test.points.to, x: 25 }); - let c = pattern.parts.test.paths[1]; - expect(c.attributes.get("class")).to.equal("mark"); - expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); - expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); - expect(c.attributes.get("data-text")).to.equal("18cm"); - expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(25); - expect(c.ops[0].to.y).to.equal(20); - expect(c.ops[1].to.x).to.equal(25); - expect(c.ops[1].to.y).to.equal(200); - c = pattern.parts.test.paths["1_ls"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(20); - expect(c.ops[1].to.x).to.equal(25); - expect(c.ops[1].to.y).to.equal(20); - c = pattern.parts.test.paths["1_le"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(200); - expect(c.ops[1].to.x).to.equal(25); - expect(c.ops[1].to.y).to.equal(200); + + it("Should draw a line and add text to indicate its length", () => { + let c = pattern.parts.test.paths["__paperless1"]; + expect(c.attributes.get("class")).to.equal("mark"); + expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); + expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); + expect(c.attributes.get("data-text")).to.equal("18cm"); + expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(25); + expect(c.ops[0].to.y).to.equal(20); + expect(c.ops[1].to.x).to.equal(25); + expect(c.ops[1].to.y).to.equal(200); + }); + + it("Should draw the start marker", () => { + let c = pattern.parts.test.paths["__paperless1_ls"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(20); + expect(c.ops[1].to.x).to.equal(25); + expect(c.ops[1].to.y).to.equal(20); + }); + + it("Should draw the end marker", () => { + let c = pattern.parts.test.paths["__paperless1_le"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(200); + expect(c.ops[1].to.x).to.equal(25); + expect(c.ops[1].to.y).to.equal(200); + }); }); - it("Should run the ld macro", () => { + describe("Measures the length of straight lines", () => { let pattern = new freesewing.Pattern(); pattern.draft = function() {}; pattern.use(plugin); @@ -112,7 +132,9 @@ describe("plugin-dimension", function() { to: pattern.parts.test.points.to, d: 15 }); - let c = pattern.parts.test.paths[1]; + + it("Should draw a line and add text to indicate its length", () => { + let c = pattern.parts.test.paths["__paperless1"]; expect(c.attributes.get("class")).to.equal("mark"); expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); @@ -120,29 +142,37 @@ describe("plugin-dimension", function() { expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); expect(c.ops[0].type).to.equal("move"); expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(20.61); - expect(c.ops[0].to.y).to.equal(-0.61); - expect(c.ops[1].to.x).to.equal(110.61); - expect(c.ops[1].to.y).to.equal(89.39); - c = pattern.parts.test.paths["1_ls"]; + expect(round(c.ops[0].to.x)).to.equal(20.61); + expect(round(c.ops[0].to.y)).to.equal(-0.61); + expect(round(c.ops[1].to.x)).to.equal(110.61); + expect(round(c.ops[1].to.y)).to.equal(89.39); + }); + + it("Should draw the start marker", () => { + let c = pattern.parts.test.paths["__paperless1_ls"]; expect(c.attributes.get("class")).to.equal("mark dotted"); expect(c.ops[0].type).to.equal("move"); expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(10); - expect(c.ops[1].to.x).to.equal(20.61); - expect(c.ops[1].to.y).to.equal(-0.61); - c = pattern.parts.test.paths["1_le"]; + expect(round(c.ops[0].to.x)).to.equal(10); + expect(round(c.ops[0].to.y)).to.equal(10); + expect(round(c.ops[1].to.x)).to.equal(20.61); + expect(round(c.ops[1].to.y)).to.equal(-0.61); + }); + + it("Should draw the end marker", () => { + let c = pattern.parts.test.paths["__paperless1_le"]; expect(c.attributes.get("class")).to.equal("mark dotted"); expect(c.ops[0].type).to.equal("move"); expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(100); - expect(c.ops[0].to.y).to.equal(100); - expect(c.ops[1].to.x).to.equal(110.61); - expect(c.ops[1].to.y).to.equal(89.39); + expect(round(c.ops[0].to.x)).to.equal(100); + expect(round(c.ops[0].to.y)).to.equal(100); + expect(round(c.ops[1].to.x)).to.equal(110.61); + expect(round(c.ops[1].to.y)).to.equal(89.39); + }); }); - it("Should run the pd macro", () => { + describe("Measures curved lines", () => { + let pattern = new freesewing.Pattern(); pattern.draft = function() {}; pattern.use(plugin); @@ -156,33 +186,42 @@ describe("plugin-dimension", function() { path: new pattern.Path().move(from).curve(cp1, cp2, to), d: 15 }); - let c = pattern.parts.test.paths[1]; - expect(c.attributes.get("class")).to.equal("mark"); - expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); - expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); - expect(c.attributes.get("data-text")).to.equal("15.09cm"); - expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("curve"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(25); - expect(c.ops[1].to.x).to.equal(37.15); - expect(c.ops[1].to.y).to.equal(32.79); - c = pattern.parts.test.paths["1_ls"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(10); - expect(c.ops[1].to.x).to.equal(10); - expect(c.ops[1].to.y).to.equal(25); - c = pattern.parts.test.paths["1_le"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(100); - expect(c.ops[0].to.y).to.equal(100); - expect(c.ops[1].to.x).to.equal(100); - expect(c.ops[1].to.y).to.equal(115); + + it("Should draw a line and add text to indicate the length", () => { + let c = pattern.parts.test.paths["__paperless1"]; + expect(c.attributes.get("class")).to.equal("mark"); + expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); + expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); + expect(c.attributes.get("data-text")).to.equal("15.09cm"); + expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("curve"); + expect(round(c.ops[0].to.x)).to.equal(10); + expect(round(c.ops[0].to.y)).to.equal(25); + expect(round(c.ops[1].to.x)).to.equal(37.15); + expect(round(c.ops[1].to.y)).to.equal(32.79); + }); + + it("Should draw the start marker", () => { + let c = pattern.parts.test.paths["__paperless1_ls"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(10); + expect(c.ops[1].to.x).to.equal(10); + expect(c.ops[1].to.y).to.equal(25); + }); + + it("Should draw the end marker", () => { + let c = pattern.parts.test.paths["__paperless1_le"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(100); + expect(c.ops[0].to.y).to.equal(100); + expect(c.ops[1].to.x).to.equal(100); + expect(c.ops[1].to.y).to.equal(115); + }); }); }); diff --git a/packages/plugin-cutonfold/.babelrc b/packages/plugin-cutonfold/.babelrc index 957cae3e64d..bc92ecff3da 100644 --- a/packages/plugin-cutonfold/.babelrc +++ b/packages/plugin-cutonfold/.babelrc @@ -2,9 +2,6 @@ "presets": [ [ "@babel/preset-env", - { - "useBuiltIns": "entry" - } ] ] } diff --git a/packages/plugin-dimension/src/.index.js.swp b/packages/plugin-dimension/src/.index.js.swp deleted file mode 100644 index 9c7432151070201e9d5c37ba9cc2146e573fffa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmYc?2=nw+u+TGLU|?VnU|@)hnUvViV9mI476U_aMp0%lNSpw62B|C7^-WB6%FoZ% zb<8Z%%gIkp%t6;y2R2aOB|o_|H#M)MSU;^OHMKakJTos{zaTL=J25@ASic~rG(9s< zHzhMSHLo}`KTp57C|N%AvmimD=8`n3xz_( zN2$>e7!85Z5Eu=C(GVC7fzc2c4S~@R7!84u5CSCyObqo53=B+A&sIQbMl||A6!1gE zE1@(@9h5stjfTKz2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-R~z!VpMIVPMc; zU|>)I4FCu*Fu?l%cla3?*6=ehtmbE6=;LQ#=;dc%NZ@B+u;XW7(Bo%dP~c}^VC83E zIKjujFrANq!H$oC;WaMfx3|Dy>7_RU#Fs$NbUvnlz@X2;!0?Bif#EPa1H&G628K243=C7)85lCz z85oS%85sVvF)$osV_?|N#=x+Vje%h%8v{cg8v}zm8v_Fi8w0~>RtAP6tPBi0SQ!`= zure?-u`)2^ure_CvNAA8ure?_XJKGi%)-Es$HKti%)-F%hnaz4Co==X3}yy~iOdWP zmCOtb3Cs)(TFeX#PnZ}O<}ooaR5LL!L@+_(S{W4IM5adtILJ&>&?w2sEY>SXEXgR2 z&P<8bR7gq9Ni9iLKow?yX-Ug3QqV}w&nqrb$V^elPg5w)*UL;P)>Np5DghbkSX7i) zsh3#{rZu1{P?aDVpP*6=R#F?ElbV3l0jMgFEW&O|F+o#`6JoKO0(J;iH$Y^-x{7jB ztQ68p^O8$4^Yaumit}M!)7MuBO3lqLOI3g`cL8gt)d5oqXo0F=i>6LNA*Cp>+$S|L zCAA0~FFK&$1;veCYF>(lrVc_qOdvBwL0dsRJ||UO6KV%eBZ^BBi%L)pfeXQmDTW)9 zlM0SuTaXJfQxs}yAdXK@E%8jzC@4xz%dCLesGy*iSW;4?p`MahlBipfT2Z2#oRe5w ztgfS=o|c)Dqnn#pl&z4Qnpcuq1UDa3lRDV9AnkD5O7k*Hia`ko90ob5dFdq?8k(9I z7K1EEEz(WRO99zgT9l)q43B}3d`(PCp&G#c$JF9hl%I=56WmiE-NHYVahPqQr6+*lH?`w4(f69fgv7P}u2!qX^jrCHV@r z3OPBD1XY}`qo7`ruMSbB1IoW>NeAR;kb&r$Kw=o$$Ve(VxILbenU|Va1P&f5dcBMs zucK(9meM#7719!Oic?`VK|xV!P-@)dAP(m`M-brT}GoP)b)U&ezM!cg;)j zO)SbzEz(44A|jPx;DQiRSmJLbA&d+LH5Z9Cl!%rTG&qQFB%*6TZ6JbU1kykR1(;q+ zW^oB9)S<0IsAiPFhql?^5d>q?$jk+o?bYzIA6(`u)GC1dqoA&*2U|t2msOmfrw&sOiN<1>D*c?y zBz>ruIs>Tx{~Odd=Yy>Oht2Qr;b&l|;AddS<7Z$<<7Z%q=VxHh=4W6KgY4P=xQB7`!_2pRqXO+JGA;~;~;vy7los>~FH%slY421FI8R}E62pa53_8n6LP zL`JKFCQrbVPT)blV)a;<>Z064+#}G?8N0-s9K_H`v4Tc { - let pattern = new freesewing.Pattern().use(plugin); - pattern.render(); - expect(pattern.svg.attributes.get("freesewing:plugin-dimension")).to.equal( - version - ); -}); +describe("The dimension plugin", function() { -it("Should run the hd macro", () => { - let pattern = new freesewing.Pattern(); - pattern.draft = function() {}; - pattern.use(plugin); - pattern.parts.test = new pattern.Part(); - pattern.parts.test.points.from = new pattern.Point(10, 20); - pattern.parts.test.points.to = new pattern.Point(200, 20); - let { macro } = pattern.parts.test.shorthand(); - macro("hd", { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - y: 35 + it("Should set the plugin name:version attribute", () => { + let pattern = new freesewing.Pattern().use(plugin); + pattern.render(); + expect(pattern.svg.attributes.get("freesewing:plugin-dimension")).to.equal( + version + ); }); - let c = pattern.parts.test.paths[1]; - expect(c.attributes.get("class")).to.equal("mark"); - expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); - expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); - expect(c.attributes.get("data-text")).to.equal("19cm"); - expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(35); - expect(c.ops[1].to.x).to.equal(200); - expect(c.ops[1].to.y).to.equal(35); - c = pattern.parts.test.paths["1_ls"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(20); - expect(c.ops[1].to.x).to.equal(10); - expect(c.ops[1].to.y).to.equal(35); - c = pattern.parts.test.paths["1_le"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(200); - expect(c.ops[0].to.y).to.equal(20); - expect(c.ops[1].to.x).to.equal(200); - expect(c.ops[1].to.y).to.equal(35); -}); - -it("Should run the vd macro", () => { - let pattern = new freesewing.Pattern(); - pattern.draft = function() {}; - pattern.use(plugin); - pattern.parts.test = new pattern.Part(); - pattern.parts.test.points.from = new pattern.Point(10, 20); - pattern.parts.test.points.to = new pattern.Point(10, 200); - let { macro } = pattern.parts.test.shorthand(); - macro("vd", { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - x: 25 + + describe("Measures horizontal dimensions", function() { + + let pattern = new freesewing.Pattern(); + pattern.draft = function() {}; + pattern.use(plugin); + pattern.parts.test = new pattern.Part(); + pattern.parts.test.points.from = new pattern.Point(10, 20); + pattern.parts.test.points.to = new pattern.Point(200, 20); + let { macro } = pattern.parts.test.shorthand(); + macro("hd", { + from: pattern.parts.test.points.from, + to: pattern.parts.test.points.to, + y: 35 + }) + + it("should draw a line and add text to indicate its length", () => { + let c = pattern.parts.test.paths["__paperless1"]; + expect(c.attributes.get("class")).to.equal("mark"); + expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); + expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); + expect(c.attributes.get("data-text")).to.equal("19cm"); + expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(35); + expect(c.ops[1].to.x).to.equal(200); + expect(c.ops[1].to.y).to.equal(35); + }); + + it("should draw the start marker", () => { + let c = pattern.parts.test.paths["__paperless1_ls"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(20); + expect(c.ops[1].to.x).to.equal(10); + expect(c.ops[1].to.y).to.equal(35); + }); + + it("should draw the end marker", () => { + let c = pattern.parts.test.paths["__paperless1_le"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(200); + expect(c.ops[0].to.y).to.equal(20); + expect(c.ops[1].to.x).to.equal(200); + expect(c.ops[1].to.y).to.equal(35); + }); }); - let c = pattern.parts.test.paths[1]; - expect(c.attributes.get("class")).to.equal("mark"); - expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); - expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); - expect(c.attributes.get("data-text")).to.equal("18cm"); - expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(25); - expect(c.ops[0].to.y).to.equal(20); - expect(c.ops[1].to.x).to.equal(25); - expect(c.ops[1].to.y).to.equal(200); - c = pattern.parts.test.paths["1_ls"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(20); - expect(c.ops[1].to.x).to.equal(25); - expect(c.ops[1].to.y).to.equal(20); - c = pattern.parts.test.paths["1_le"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(200); - expect(c.ops[1].to.x).to.equal(25); - expect(c.ops[1].to.y).to.equal(200); -}); + + describe("Measures vertical dimensions", () => { + let pattern = new freesewing.Pattern(); + pattern.draft = function() {}; + pattern.use(plugin); + pattern.parts.test = new pattern.Part(); + pattern.parts.test.points.from = new pattern.Point(10, 20); + pattern.parts.test.points.to = new pattern.Point(10, 200); + let { macro } = pattern.parts.test.shorthand(); + macro("vd", { + from: pattern.parts.test.points.from, + to: pattern.parts.test.points.to, + x: 25 + }); -it("Should run the ld macro", () => { - let pattern = new freesewing.Pattern(); - pattern.draft = function() {}; - pattern.use(plugin); - pattern.parts.test = new pattern.Part(); - pattern.parts.test.points.from = new pattern.Point(10, 10); - pattern.parts.test.points.to = new pattern.Point(100, 100); - let { macro } = pattern.parts.test.shorthand(); - macro("ld", { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - d: 15 - }); - let c = pattern.parts.test.paths[1]; - expect(c.attributes.get("class")).to.equal("mark"); - expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); - expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); - expect(c.attributes.get("data-text")).to.equal("12.73cm"); - expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(20.61); - expect(c.ops[0].to.y).to.equal(-0.61); - expect(c.ops[1].to.x).to.equal(110.61); - expect(c.ops[1].to.y).to.equal(89.39); - c = pattern.parts.test.paths["1_ls"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(10); - expect(c.ops[1].to.x).to.equal(20.61); - expect(c.ops[1].to.y).to.equal(-0.61); - c = pattern.parts.test.paths["1_le"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(100); - expect(c.ops[0].to.y).to.equal(100); - expect(c.ops[1].to.x).to.equal(110.61); - expect(c.ops[1].to.y).to.equal(89.39); -}); + it("Should draw a line and add text to indicate its length", () => { + let c = pattern.parts.test.paths["__paperless1"]; + expect(c.attributes.get("class")).to.equal("mark"); + expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); + expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); + expect(c.attributes.get("data-text")).to.equal("18cm"); + expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(25); + expect(c.ops[0].to.y).to.equal(20); + expect(c.ops[1].to.x).to.equal(25); + expect(c.ops[1].to.y).to.equal(200); + }); -it("Should run the pd macro", () => { - let pattern = new freesewing.Pattern(); - pattern.draft = function() {}; - pattern.use(plugin); - pattern.parts.test = new pattern.Part(); - let from = new pattern.Point(10, 10); - let cp1 = new pattern.Point(100, 10); - let cp2 = new pattern.Point(10, 100); - let to = new pattern.Point(100, 100); - let { macro } = pattern.parts.test.shorthand(); - macro("pd", { - path: new pattern.Path().move(from).curve(cp1, cp2, to), - d: 15 + it("Should draw the start marker", () => { + let c = pattern.parts.test.paths["__paperless1_ls"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(20); + expect(c.ops[1].to.x).to.equal(25); + expect(c.ops[1].to.y).to.equal(20); + }); + + it("Should draw the end marker", () => { + let c = pattern.parts.test.paths["__paperless1_le"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(200); + expect(c.ops[1].to.x).to.equal(25); + expect(c.ops[1].to.y).to.equal(200); + }); + }); + + describe("Measures the length of straight lines", () => { + let pattern = new freesewing.Pattern(); + pattern.draft = function() {}; + pattern.use(plugin); + pattern.parts.test = new pattern.Part(); + pattern.parts.test.points.from = new pattern.Point(10, 10); + pattern.parts.test.points.to = new pattern.Point(100, 100); + let { macro } = pattern.parts.test.shorthand(); + macro("ld", { + from: pattern.parts.test.points.from, + to: pattern.parts.test.points.to, + d: 15 + }); + + it("Should draw a line and add text to indicate its length", () => { + let c = pattern.parts.test.paths["__paperless1"]; + expect(c.attributes.get("class")).to.equal("mark"); + expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); + expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); + expect(c.attributes.get("data-text")).to.equal("12.73cm"); + expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(round(c.ops[0].to.x)).to.equal(20.61); + expect(round(c.ops[0].to.y)).to.equal(-0.61); + expect(round(c.ops[1].to.x)).to.equal(110.61); + expect(round(c.ops[1].to.y)).to.equal(89.39); + }); + + it("Should draw the start marker", () => { + let c = pattern.parts.test.paths["__paperless1_ls"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(round(c.ops[0].to.x)).to.equal(10); + expect(round(c.ops[0].to.y)).to.equal(10); + expect(round(c.ops[1].to.x)).to.equal(20.61); + expect(round(c.ops[1].to.y)).to.equal(-0.61); + }); + + it("Should draw the end marker", () => { + let c = pattern.parts.test.paths["__paperless1_le"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(round(c.ops[0].to.x)).to.equal(100); + expect(round(c.ops[0].to.y)).to.equal(100); + expect(round(c.ops[1].to.x)).to.equal(110.61); + expect(round(c.ops[1].to.y)).to.equal(89.39); + }); + }); + + describe("Measures curved lines", () => { + + let pattern = new freesewing.Pattern(); + pattern.draft = function() {}; + pattern.use(plugin); + pattern.parts.test = new pattern.Part(); + let from = new pattern.Point(10, 10); + let cp1 = new pattern.Point(100, 10); + let cp2 = new pattern.Point(10, 100); + let to = new pattern.Point(100, 100); + let { macro } = pattern.parts.test.shorthand(); + macro("pd", { + path: new pattern.Path().move(from).curve(cp1, cp2, to), + d: 15 + }); + + it("Should draw a line and add text to indicate the length", () => { + let c = pattern.parts.test.paths["__paperless1"]; + expect(c.attributes.get("class")).to.equal("mark"); + expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); + expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); + expect(c.attributes.get("data-text")).to.equal("15.09cm"); + expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("curve"); + expect(round(c.ops[0].to.x)).to.equal(10); + expect(round(c.ops[0].to.y)).to.equal(25); + expect(round(c.ops[1].to.x)).to.equal(37.15); + expect(round(c.ops[1].to.y)).to.equal(32.79); + }); + + it("Should draw the start marker", () => { + let c = pattern.parts.test.paths["__paperless1_ls"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(10); + expect(c.ops[0].to.y).to.equal(10); + expect(c.ops[1].to.x).to.equal(10); + expect(c.ops[1].to.y).to.equal(25); + }); + + it("Should draw the end marker", () => { + let c = pattern.parts.test.paths["__paperless1_le"]; + expect(c.attributes.get("class")).to.equal("mark dotted"); + expect(c.ops[0].type).to.equal("move"); + expect(c.ops[1].type).to.equal("line"); + expect(c.ops[0].to.x).to.equal(100); + expect(c.ops[0].to.y).to.equal(100); + expect(c.ops[1].to.x).to.equal(100); + expect(c.ops[1].to.y).to.equal(115); + }); }); - let c = pattern.parts.test.paths[1]; - expect(c.attributes.get("class")).to.equal("mark"); - expect(c.attributes.get("marker-start")).to.equal("url(#dimensionFrom)"); - expect(c.attributes.get("marker-end")).to.equal("url(#dimensionTo)"); - expect(c.attributes.get("data-text")).to.equal("15.09cm"); - expect(c.attributes.get("data-text-class")).to.equal("fill-mark center"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("curve"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(25); - expect(c.ops[1].to.x).to.equal(37.15); - expect(c.ops[1].to.y).to.equal(32.79); - c = pattern.parts.test.paths["1_ls"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(10); - expect(c.ops[0].to.y).to.equal(10); - expect(c.ops[1].to.x).to.equal(10); - expect(c.ops[1].to.y).to.equal(25); - c = pattern.parts.test.paths["1_le"]; - expect(c.attributes.get("class")).to.equal("mark dotted"); - expect(c.ops[0].type).to.equal("move"); - expect(c.ops[1].type).to.equal("line"); - expect(c.ops[0].to.x).to.equal(100); - expect(c.ops[0].to.y).to.equal(100); - expect(c.ops[1].to.x).to.equal(100); - expect(c.ops[1].to.y).to.equal(115); });