✅ Tests for part
This commit is contained in:
parent
081c0cf69e
commit
89e4dc9482
8 changed files with 189 additions and 73 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
116
tests/part.test.js
Normal file
116
tests/part.test.js
Normal file
|
@ -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);
|
||||
});
|
|
@ -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);
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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]");
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue