1
0
Fork 0

Added support for different option types

This commit is contained in:
Joost De Cock 2018-09-03 12:20:51 +02:00
parent 2d0f48bfc6
commit ade70da54b
2 changed files with 46 additions and 7 deletions

View file

@ -39,12 +39,13 @@ export default function Pattern(config = false) {
for (let i in config.options) { for (let i in config.options) {
let option = config.options[i]; let option = config.options[i];
if (typeof option === "object") { if (typeof option === "object") {
if (typeof option.val !== "undefined") this.options[i] = option.val / 100; if (typeof option.pct !== "undefined") this.options[i] = option.pct / 100;
else if (typeof option.mm !== "undefined") this.options[i] = option.mm; else if (typeof option.mm !== "undefined") this.options[i] = option.mm;
else if (typeof option.angle !== "undefined") else if (typeof option.deg !== "undefined") this.options[i] = option.deg;
this.options[i] = option.angle; else if (typeof option.dflt !== "undefined")
this.options[i] = option.dflt;
else throw "Unknown option type"; else throw "Unknown option type";
} else if (typeof option === "number") { } else {
this.options[i] = option; this.options[i] = option;
} }
} }

View file

@ -6,7 +6,7 @@ it("Pattern constructor should initialize object", () => {
foo: "bar", foo: "bar",
options: { options: {
constant: 2, constant: 2,
percentage: { val: 30, min: 0, max: 100 } percentage: { pct: 30, min: 0, max: 100 }
} }
}); });
expect(pattern.width).to.equal(false); expect(pattern.width).to.equal(false);
@ -28,16 +28,54 @@ it("Should throw exception upon draft", () => {
it("Should load percentage options", () => { it("Should load percentage options", () => {
let pattern = new freesewing.Pattern({ let pattern = new freesewing.Pattern({
options: { options: {
test: { val: 30 } test: { pct: 30 }
} }
}); });
expect(pattern.options.test).to.equal(0.3); expect(pattern.options.test).to.equal(0.3);
}); });
it("Should load millimeter options", () => {
let pattern = new freesewing.Pattern({
options: {
test: { mm: 30 }
}
});
expect(pattern.options.test).to.equal(30);
});
it("Should load degree options", () => {
let pattern = new freesewing.Pattern({
options: {
test: { deg: 15 }
}
});
expect(pattern.options.test).to.equal(15);
});
it("Should load an array option", () => {
let pattern = new freesewing.Pattern({
options: {
test: { dflt: "foo" }
}
});
expect(pattern.options.test).to.equal("foo");
});
it("Should throw an error for an unknown option", () => {
expect(
() =>
new freesewing.Pattern({
options: {
test: { foo: "bar" }
}
})
).to.throw();
});
it("Should sample an option", () => { it("Should sample an option", () => {
let pattern = new freesewing.Pattern({ let pattern = new freesewing.Pattern({
options: { options: {
len: { val: 30, min: 0, max: 100 }, len: { pct: 30, min: 0, max: 100 },
bonus: 10 bonus: 10
} }
}); });