mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-07 17:04:58 +01:00
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
import * as test from '../test';
|
|
|
|
export function setState(win, app, state) {
|
|
|
|
let i = 1;
|
|
let gen = () => i++;
|
|
let pt = ([x, y]) => [gen(), [gen(), x], [gen(), y]];
|
|
for (let sketchId of Object.keys(state.sketches)) {
|
|
let sketch = state.sketches[sketchId];
|
|
let sketchKey = app.TPI.services.project.sketchStorageKey(sketchId);
|
|
win.localStorage.setItem(sketchKey, JSON.stringify({
|
|
layers: [{
|
|
name: 'sketch',
|
|
data: sketch.Segment.map(([a, b]) => ({
|
|
_class: 'TCAD.TWO.Segment',
|
|
id: gen(),
|
|
points: [pt(a), pt(b)],
|
|
}))
|
|
}]
|
|
}));
|
|
}
|
|
app.TPI.services.craft.reset(state.operations);
|
|
}
|
|
|
|
export function assertScene(app, env, expected) {
|
|
let shell = app.TPI.services.cadRegistry.getAllShells()[0].shell;
|
|
env.assertData(expected, app.TPI.brep.IO.toLoops(shell, Math.round));
|
|
}
|
|
|
|
export function defineTest(state, expected) {
|
|
return env => {
|
|
test.emptyModeller(env.test((win, app) => {
|
|
setState(win, app, state);
|
|
assertScene(app, env, expected);
|
|
env.done();
|
|
}));
|
|
}
|
|
}
|
|
|
|
export function defineTests(tests) {
|
|
let out = {};
|
|
for (let {name, state, expected} of tests) {
|
|
out['test' + name] = defineTest(state, expected);
|
|
}
|
|
return out;
|
|
}
|