1
0
Fork 0

Tests for part

This commit is contained in:
Joost De Cock 2018-08-12 17:02:49 +02:00
parent 081c0cf69e
commit 89e4dc9482
8 changed files with 189 additions and 73 deletions

View file

@ -1,5 +1,5 @@
var expect = require("chai").expect; let expect = require("chai").expect;
var Point = require("../dist/index.js").Point; let Point = require("../dist/index.js").Point;
function newAttr() { function newAttr() {
return new Point(0, 0).attributes; return new Point(0, 0).attributes;

View file

@ -1,8 +1,8 @@
var expect = require("chai").expect; let expect = require("chai").expect;
var freesewing = require("../dist/index.js"); let freesewing = require("../dist/index.js");
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
var h = pattern.hooks; let h = pattern.hooks;
it("Should contain all hooks", () => { it("Should contain all hooks", () => {
let test = [ let test = [
@ -38,11 +38,11 @@ it("Should not attach a non-existing hook", () => {
expect(h.attach("no-such-hook", obj)).to.equal(undefined); expect(h.attach("no-such-hook", obj)).to.equal(undefined);
}); });
var count = 0; let count = 0;
var pre = function() { let pre = function() {
count += 5; count += 5;
}; };
var post = function() { let post = function() {
count = count * -1; count = count * -1;
}; };

116
tests/part.test.js Normal file
View 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);
});

View file

@ -1,5 +1,5 @@
var expect = require("chai").expect; let expect = require("chai").expect;
var Point = require("../dist/index.js").Point; let Point = require("../dist/index.js").Point;
it("Should return point object", () => { it("Should return point object", () => {
let result = new Point(2, 4); let result = new Point(2, 4);

View file

@ -1,8 +1,8 @@
var expect = require("chai").expect; let expect = require("chai").expect;
var freesewing = require("../dist/index.js"); let freesewing = require("../dist/index.js");
it("Should create a snippet", () => { it("Should create a snippet", () => {
var snip1 = new freesewing.Snippet( let snip1 = new freesewing.Snippet(
"test", "test",
new freesewing.Point(12, 34), new freesewing.Point(12, 34),
"this is an example" "this is an example"
@ -14,12 +14,12 @@ it("Should create a snippet", () => {
}); });
it("Should default to empty description", () => { 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(""); expect(snip2.description).to.equal("");
}); });
it("Should clone a snippet", () => { it("Should clone a snippet", () => {
var snip3 = new freesewing.Snippet( let snip3 = new freesewing.Snippet(
"boo", "boo",
new freesewing.Point(56, 78), new freesewing.Point(56, 78),
"clone me" "clone me"

View file

@ -1,8 +1,8 @@
var expect = require("chai").expect; let expect = require("chai").expect;
var freesewing = require("../dist/index.js"); let freesewing = require("../dist/index.js");
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
var store = pattern.store; let store = pattern.store;
it("Store should be a Map", () => { it("Store should be a Map", () => {
expect(store.data.toString()).to.equal("[object Map]"); expect(store.data.toString()).to.equal("[object Map]");

View file

@ -1,12 +1,12 @@
var version = require("../package.json").version; let version = require("../package.json").version;
var render = require("./fixtures/render.js"); let render = require("./fixtures/render.js");
var expect = require("chai").expect; let expect = require("chai").expect;
var chai = require("chai"); let chai = require("chai");
chai.use(require("chai-string")); chai.use(require("chai-string"));
var freesewing = require("../dist/index.js"); let freesewing = require("../dist/index.js");
it("Svg constructor should initialize object", () => { it("Svg constructor should initialize object", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
expect(svg.openGroups).to.eql([]); expect(svg.openGroups).to.eql([]);
@ -35,12 +35,12 @@ it("Svg constructor should initialize object", () => {
}); });
it("Should render Svg boilerplate", () => { it("Should render Svg boilerplate", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
expect(pattern.render()).to.equalIgnoreSpaces(render.boilerplate); expect(pattern.render()).to.equalIgnoreSpaces(render.boilerplate);
}); });
it("Should render Svg part boilerplate", () => { it("Should render Svg part boilerplate", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); pattern.parts.test = new pattern.Part();
@ -50,7 +50,7 @@ it("Should render Svg part boilerplate", () => {
}); });
it("Should render Svg path", () => { it("Should render Svg path", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); pattern.parts.test = new pattern.Part();
@ -65,7 +65,7 @@ it("Should render Svg path", () => {
expect(pattern.render()).to.equalIgnoreSpaces(render.path); expect(pattern.render()).to.equalIgnoreSpaces(render.path);
}); });
it("Should not render Svg path when render property is false", () => { it("Should not render Svg path when render property is false", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); 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()); //console.log(pattern.render());
it("Should render Svg text", () => { it("Should render Svg text", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); pattern.parts.test = new pattern.Part();
@ -96,7 +96,7 @@ it("Should render Svg text", () => {
}); });
it("Should not render empty text", () => { it("Should not render empty text", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); pattern.parts.test = new pattern.Part();
@ -108,7 +108,7 @@ it("Should not render empty text", () => {
}); });
it("Should render Svg text on path", () => { it("Should render Svg text on path", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); 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", () => { it("Should render Svg text on path, center aligned", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); 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", () => { it("Should render Svg text on path, right aligned", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); 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", () => { it("Should render an Svg snippet", () => {
var pattern = new freesewing.Pattern(); let pattern = new freesewing.Pattern();
pattern.render(); pattern.render();
let svg = pattern.svg; let svg = pattern.svg;
pattern.parts.test = new pattern.Part(); pattern.parts.test = new pattern.Part();

View file

@ -1,81 +1,81 @@
var expect = require("chai").expect; let expect = require("chai").expect;
var freesewing = require("../dist/index.js"); let freesewing = require("../dist/index.js");
var utils = freesewing.utils; let utils = freesewing.utils;
it("Should return the correct macro name", () => { it("Should return the correct macro name", () => {
expect(utils.macroName("test")).to.equal("_macro_test"); expect(utils.macroName("test")).to.equal("_macro_test");
}); });
it("Should find the intersection of two endless line segments", () => { it("Should find the intersection of two endless line segments", () => {
var a = new freesewing.Point(10, 20); let a = new freesewing.Point(10, 20);
var b = new freesewing.Point(20, 24); let b = new freesewing.Point(20, 24);
var c = new freesewing.Point(90, 19); let c = new freesewing.Point(90, 19);
var d = new freesewing.Point(19, 70); let d = new freesewing.Point(19, 70);
var X = freesewing.utils.beamsCross(a, b, c, d); let X = freesewing.utils.beamsCross(a, b, c, d);
expect(X.x).to.equal(60.49); expect(X.x).to.equal(60.49);
expect(X.y).to.equal(40.2); expect(X.y).to.equal(40.2);
}); });
it("Should detect parallel lines", () => { it("Should detect parallel lines", () => {
var a = new freesewing.Point(10, 20); let a = new freesewing.Point(10, 20);
var b = new freesewing.Point(20, 20); let b = new freesewing.Point(20, 20);
var c = new freesewing.Point(90, 40); let c = new freesewing.Point(90, 40);
var d = new freesewing.Point(19, 40); let d = new freesewing.Point(19, 40);
expect(freesewing.utils.beamsCross(a, b, c, d)).to.equal(false); expect(freesewing.utils.beamsCross(a, b, c, d)).to.equal(false);
expect(freesewing.utils.linesCross(a, b, c, d)).to.equal(false); expect(freesewing.utils.linesCross(a, b, c, d)).to.equal(false);
}); });
it("Should detect vertical lines", () => { it("Should detect vertical lines", () => {
var a = new freesewing.Point(10, 20); let a = new freesewing.Point(10, 20);
var b = new freesewing.Point(10, 90); let b = new freesewing.Point(10, 90);
var c = new freesewing.Point(90, 40); let c = new freesewing.Point(90, 40);
var d = new freesewing.Point(19, 40); let d = new freesewing.Point(19, 40);
var X = freesewing.utils.beamsCross(a, b, c, d); let X = freesewing.utils.beamsCross(a, b, c, d);
expect(X.x).to.equal(10); expect(X.x).to.equal(10);
expect(X.y).to.equal(40); 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); expect(X.x).to.equal(10);
}); });
it("Should swap direction prior to finding beam intersection", () => { it("Should swap direction prior to finding beam intersection", () => {
var a = new freesewing.Point(10, 20); let a = new freesewing.Point(10, 20);
var b = new freesewing.Point(00, 90); let b = new freesewing.Point(00, 90);
var c = new freesewing.Point(90, 40); let c = new freesewing.Point(90, 40);
var d = new freesewing.Point(19, 40); let d = new freesewing.Point(19, 40);
var X = freesewing.utils.beamsCross(a, b, c, d); let X = freesewing.utils.beamsCross(a, b, c, d);
expect(X.x).to.equal(7.14); expect(X.x).to.equal(7.14);
expect(X.y).to.equal(40); expect(X.y).to.equal(40);
}); });
it("Should return false when two lines don't intersect", () => { it("Should return false when two lines don't intersect", () => {
var a = new freesewing.Point(10, 20); let a = new freesewing.Point(10, 20);
var b = new freesewing.Point(20, 24); let b = new freesewing.Point(20, 24);
var c = new freesewing.Point(90, 19); let c = new freesewing.Point(90, 19);
var d = new freesewing.Point(19, 70); let d = new freesewing.Point(19, 70);
expect(freesewing.utils.linesCross(a, b, c, d)).to.equal(false); expect(freesewing.utils.linesCross(a, b, c, d)).to.equal(false);
}); });
it("Should find the intersection of two line segments", () => { it("Should find the intersection of two line segments", () => {
var a = new freesewing.Point(10, 10); let a = new freesewing.Point(10, 10);
var b = new freesewing.Point(90, 74); let b = new freesewing.Point(90, 74);
var c = new freesewing.Point(90, 19); let c = new freesewing.Point(90, 19);
var d = new freesewing.Point(11, 70); let d = new freesewing.Point(11, 70);
var X = freesewing.utils.beamsCross(a, b, c, d); let X = freesewing.utils.beamsCross(a, b, c, d);
expect(X.x).to.equal(51.95); expect(X.x).to.equal(51.95);
expect(X.y).to.equal(43.56); expect(X.y).to.equal(43.56);
}); });
it("Should find the intersection of an endles line and a give Y-value", () => { it("Should find the intersection of an endles line and a give Y-value", () => {
var a = new freesewing.Point(10, 10); let a = new freesewing.Point(10, 10);
var b = new freesewing.Point(90, 74); let b = new freesewing.Point(90, 74);
var X = freesewing.utils.beamCrossesY(a, b, 69); let X = freesewing.utils.beamCrossesY(a, b, 69);
expect(X.x).to.equal(83.75); expect(X.x).to.equal(83.75);
expect(X.y).to.equal(69); expect(X.y).to.equal(69);
}); });
it("Should detect horizontal lines never pass a give Y-value", () => { it("Should detect horizontal lines never pass a give Y-value", () => {
var a = new freesewing.Point(10, 10); let a = new freesewing.Point(10, 10);
var b = new freesewing.Point(90, 10); let b = new freesewing.Point(90, 10);
expect(freesewing.utils.beamCrossesY(a, b, 69)).to.equal(false); expect(freesewing.utils.beamCrossesY(a, b, 69)).to.equal(false);
}); });