diff --git a/tests/attributes.test.js b/tests/attributes.test.js index 3ef48ed56b5..c1bf87b345e 100644 --- a/tests/attributes.test.js +++ b/tests/attributes.test.js @@ -1,5 +1,5 @@ -var expect = require("chai").expect; -var Point = require("../dist/index.js").Point; +let expect = require("chai").expect; +let Point = require("../dist/index.js").Point; function newAttr() { return new Point(0, 0).attributes; diff --git a/tests/hooks.test.js b/tests/hooks.test.js index dccd1c3179e..8ddc3231582 100644 --- a/tests/hooks.test.js +++ b/tests/hooks.test.js @@ -1,8 +1,8 @@ -var expect = require("chai").expect; -var freesewing = require("../dist/index.js"); +let expect = require("chai").expect; +let freesewing = require("../dist/index.js"); -var pattern = new freesewing.Pattern(); -var h = pattern.hooks; +let pattern = new freesewing.Pattern(); +let h = pattern.hooks; it("Should contain all hooks", () => { let test = [ @@ -38,11 +38,11 @@ it("Should not attach a non-existing hook", () => { expect(h.attach("no-such-hook", obj)).to.equal(undefined); }); -var count = 0; -var pre = function() { +let count = 0; +let pre = function() { count += 5; }; -var post = function() { +let post = function() { count = count * -1; }; diff --git a/tests/part.test.js b/tests/part.test.js new file mode 100644 index 00000000000..d7a70ac9efa --- /dev/null +++ b/tests/part.test.js @@ -0,0 +1,116 @@ +let expect = require("chai").expect; +let freesewing = require("../dist/index.js"); + +it("Svg constructor should initialize object", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + expect(part.paths).to.eql({}); + expect(part.snippets).to.eql({}); + expect(part.freeId).to.equal(0); + expect(part.topLeft).to.equal(false); + expect(part.bottomRight).to.equal(false); + expect(part.width).to.equal(false); + expect(part.height).to.equal(false); + expect(part.render).to.equal(true); + expect(part.points.origin.x).to.equal(0); + expect(part.points.origin.y).to.equal(0); +}); + +it("Should return a function from macroClosure", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + expect(typeof part.macroClosure()).to.equal("function"); +}); + +it("Should no run an unknown macro", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + let macro = part.macroClosure(); + expect(macro("unknown")).to.equal(undefined); +}); + +it("Should register and run a macro", () => { + let pattern = new freesewing.Pattern(); + let plugin = { + name: "test", + version: "0.1-test", + macros: { + test: function(so) { + let points = this.points; + points.macro = new this.Point(so.x, so.y); + } + } + }; + pattern.with(plugin); + let part = new pattern.Part(); + let macro = part.macroClosure(); + macro("test", { x: 123, y: 456 }); + expect(part.points.macro.x).to.equal(123); + expect(part.points.macro.y).to.equal(456); +}); + +it("Should run debug", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + let debug = part.debugClosure(); + expect(typeof debug).to.equal("function"); + let d = 1; + let e = 11; + let b = 111; + let u = 1111; + let g = 11111; + expect(debug(d, e, b, u, g)).to.equal(undefined); +}); + +it("Should return a free ID", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + let free = part.getUid(); + expect(part.getUid()).to.equal("" + (parseInt(free) + 1)); +}); + +it("Should return a function from unitsClosure", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + expect(typeof part.unitsClosure()).to.equal("function"); +}); + +it("Should convert units", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + let units = part.unitsClosure(); + expect(units(123.456)).to.equal("12.35cm"); + expect(part.units(123.456)).to.equal("12.35cm"); +}); + +it("Should set part attributes", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.attr("foo", "bar"); + expect(part.attributes.get("foo")).to.equal("bar"); + part.attr("foo", "baz"); + expect(part.attributes.get("foo")).to.equal("bar baz"); + part.attr("foo", "schmoo", true); + expect(part.attributes.get("foo")).to.equal("schmoo"); +}); + +it("Should copy an part", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.points.origin.x = 16; + part.points.foo = new part.Point(12, 23); + let test = new pattern.Part(); + test.copy(part); + expect(test.points.origin.x).to.equal(0); + expect(test.points.foo.x).to.equal(12); +}); + +it("Should return shorthand", () => { + let pattern = new freesewing.Pattern(); + pattern.settings.mode = "draft"; + pattern.settings.paperless = true; + let part = new pattern.Part(); + let short = part.shorthand(); + expect(short.final).to.equal(true); + expect(short.paperless).to.equal(true); +}); diff --git a/tests/point.test.js b/tests/point.test.js index 71e86a154b3..728c162650a 100644 --- a/tests/point.test.js +++ b/tests/point.test.js @@ -1,5 +1,5 @@ -var expect = require("chai").expect; -var Point = require("../dist/index.js").Point; +let expect = require("chai").expect; +let Point = require("../dist/index.js").Point; it("Should return point object", () => { let result = new Point(2, 4); diff --git a/tests/snippet.test.js b/tests/snippet.test.js index 7b3a2096740..374c40c99c6 100644 --- a/tests/snippet.test.js +++ b/tests/snippet.test.js @@ -1,8 +1,8 @@ -var expect = require("chai").expect; -var freesewing = require("../dist/index.js"); +let expect = require("chai").expect; +let freesewing = require("../dist/index.js"); it("Should create a snippet", () => { - var snip1 = new freesewing.Snippet( + let snip1 = new freesewing.Snippet( "test", new freesewing.Point(12, 34), "this is an example" @@ -14,12 +14,12 @@ it("Should create a snippet", () => { }); it("Should default to empty description", () => { - var snip2 = new freesewing.Snippet("test", new freesewing.Point(12, 34)); + let snip2 = new freesewing.Snippet("test", new freesewing.Point(12, 34)); expect(snip2.description).to.equal(""); }); it("Should clone a snippet", () => { - var snip3 = new freesewing.Snippet( + let snip3 = new freesewing.Snippet( "boo", new freesewing.Point(56, 78), "clone me" diff --git a/tests/store.test.js b/tests/store.test.js index 93f0e08c030..5fdac207f23 100644 --- a/tests/store.test.js +++ b/tests/store.test.js @@ -1,8 +1,8 @@ -var expect = require("chai").expect; -var freesewing = require("../dist/index.js"); +let expect = require("chai").expect; +let freesewing = require("../dist/index.js"); -var pattern = new freesewing.Pattern(); -var store = pattern.store; +let pattern = new freesewing.Pattern(); +let store = pattern.store; it("Store should be a Map", () => { expect(store.data.toString()).to.equal("[object Map]"); diff --git a/tests/svg.test.js b/tests/svg.test.js index 51842397e3a..f6a4c8a5822 100644 --- a/tests/svg.test.js +++ b/tests/svg.test.js @@ -1,12 +1,12 @@ -var version = require("../package.json").version; -var render = require("./fixtures/render.js"); -var expect = require("chai").expect; -var chai = require("chai"); +let version = require("../package.json").version; +let render = require("./fixtures/render.js"); +let expect = require("chai").expect; +let chai = require("chai"); chai.use(require("chai-string")); -var freesewing = require("../dist/index.js"); +let freesewing = require("../dist/index.js"); it("Svg constructor should initialize object", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; expect(svg.openGroups).to.eql([]); @@ -35,12 +35,12 @@ it("Svg constructor should initialize object", () => { }); it("Should render Svg boilerplate", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); expect(pattern.render()).to.equalIgnoreSpaces(render.boilerplate); }); it("Should render Svg part boilerplate", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); @@ -50,7 +50,7 @@ it("Should render Svg part boilerplate", () => { }); it("Should render Svg path", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); @@ -65,7 +65,7 @@ it("Should render Svg path", () => { expect(pattern.render()).to.equalIgnoreSpaces(render.path); }); it("Should not render Svg path when render property is false", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); @@ -83,7 +83,7 @@ it("Should not render Svg path when render property is false", () => { //console.log(pattern.render()); it("Should render Svg text", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); @@ -96,7 +96,7 @@ it("Should render Svg text", () => { }); it("Should not render empty text", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); @@ -108,7 +108,7 @@ it("Should not render empty text", () => { }); it("Should render Svg text on path", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); @@ -125,7 +125,7 @@ it("Should render Svg text on path", () => { }); it("Should render Svg text on path, center aligned", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); @@ -142,7 +142,7 @@ it("Should render Svg text on path, center aligned", () => { }); it("Should render Svg text on path, right aligned", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); @@ -159,7 +159,7 @@ it("Should render Svg text on path, right aligned", () => { }); it("Should render an Svg snippet", () => { - var pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern(); pattern.render(); let svg = pattern.svg; pattern.parts.test = new pattern.Part(); diff --git a/tests/utils.test.js b/tests/utils.test.js index 61ccb50877a..f89b5161df0 100644 --- a/tests/utils.test.js +++ b/tests/utils.test.js @@ -1,81 +1,81 @@ -var expect = require("chai").expect; -var freesewing = require("../dist/index.js"); -var utils = freesewing.utils; +let expect = require("chai").expect; +let freesewing = require("../dist/index.js"); +let utils = freesewing.utils; it("Should return the correct macro name", () => { expect(utils.macroName("test")).to.equal("_macro_test"); }); it("Should find the intersection of two endless line segments", () => { - var a = new freesewing.Point(10, 20); - var b = new freesewing.Point(20, 24); - var c = new freesewing.Point(90, 19); - var d = new freesewing.Point(19, 70); - var X = freesewing.utils.beamsCross(a, b, c, d); + let a = new freesewing.Point(10, 20); + let b = new freesewing.Point(20, 24); + let c = new freesewing.Point(90, 19); + let d = new freesewing.Point(19, 70); + let X = freesewing.utils.beamsCross(a, b, c, d); expect(X.x).to.equal(60.49); expect(X.y).to.equal(40.2); }); it("Should detect parallel lines", () => { - var a = new freesewing.Point(10, 20); - var b = new freesewing.Point(20, 20); - var c = new freesewing.Point(90, 40); - var d = new freesewing.Point(19, 40); + let a = new freesewing.Point(10, 20); + let b = new freesewing.Point(20, 20); + let c = new freesewing.Point(90, 40); + let d = new freesewing.Point(19, 40); expect(freesewing.utils.beamsCross(a, b, c, d)).to.equal(false); expect(freesewing.utils.linesCross(a, b, c, d)).to.equal(false); }); it("Should detect vertical lines", () => { - var a = new freesewing.Point(10, 20); - var b = new freesewing.Point(10, 90); - var c = new freesewing.Point(90, 40); - var d = new freesewing.Point(19, 40); - var X = freesewing.utils.beamsCross(a, b, c, d); + let a = new freesewing.Point(10, 20); + let b = new freesewing.Point(10, 90); + let c = new freesewing.Point(90, 40); + let d = new freesewing.Point(19, 40); + let X = freesewing.utils.beamsCross(a, b, c, d); expect(X.x).to.equal(10); expect(X.y).to.equal(40); - var X = freesewing.utils.beamsCross(c, d, a, b); + X = freesewing.utils.beamsCross(c, d, a, b); expect(X.x).to.equal(10); }); it("Should swap direction prior to finding beam intersection", () => { - var a = new freesewing.Point(10, 20); - var b = new freesewing.Point(00, 90); - var c = new freesewing.Point(90, 40); - var d = new freesewing.Point(19, 40); - var X = freesewing.utils.beamsCross(a, b, c, d); + let a = new freesewing.Point(10, 20); + let b = new freesewing.Point(00, 90); + let c = new freesewing.Point(90, 40); + let d = new freesewing.Point(19, 40); + let X = freesewing.utils.beamsCross(a, b, c, d); expect(X.x).to.equal(7.14); expect(X.y).to.equal(40); }); it("Should return false when two lines don't intersect", () => { - var a = new freesewing.Point(10, 20); - var b = new freesewing.Point(20, 24); - var c = new freesewing.Point(90, 19); - var d = new freesewing.Point(19, 70); + let a = new freesewing.Point(10, 20); + let b = new freesewing.Point(20, 24); + let c = new freesewing.Point(90, 19); + let d = new freesewing.Point(19, 70); expect(freesewing.utils.linesCross(a, b, c, d)).to.equal(false); }); it("Should find the intersection of two line segments", () => { - var a = new freesewing.Point(10, 10); - var b = new freesewing.Point(90, 74); - var c = new freesewing.Point(90, 19); - var d = new freesewing.Point(11, 70); - var X = freesewing.utils.beamsCross(a, b, c, d); + let a = new freesewing.Point(10, 10); + let b = new freesewing.Point(90, 74); + let c = new freesewing.Point(90, 19); + let d = new freesewing.Point(11, 70); + let X = freesewing.utils.beamsCross(a, b, c, d); expect(X.x).to.equal(51.95); expect(X.y).to.equal(43.56); }); it("Should find the intersection of an endles line and a give Y-value", () => { - var a = new freesewing.Point(10, 10); - var b = new freesewing.Point(90, 74); - var X = freesewing.utils.beamCrossesY(a, b, 69); + let a = new freesewing.Point(10, 10); + let b = new freesewing.Point(90, 74); + let X = freesewing.utils.beamCrossesY(a, b, 69); expect(X.x).to.equal(83.75); expect(X.y).to.equal(69); }); it("Should detect horizontal lines never pass a give Y-value", () => { - var a = new freesewing.Point(10, 10); - var b = new freesewing.Point(90, 10); + let a = new freesewing.Point(10, 10); + let b = new freesewing.Point(90, 10); expect(freesewing.utils.beamCrossesY(a, b, 69)).to.equal(false); });