DefinitelyTyped/types/maker.js/maker.js-tests.ts

282 lines
9.0 KiB
TypeScript

function test() {
var makerjs: typeof MakerJs;
var p1: MakerJs.IPoint = [0, 0];
var p2: MakerJs.IPoint = [1, 1];
var paths = testPaths();
var models = testModels();
var model: MakerJs.IModel = models[0];
var seed: MakerJs.IPathBezierSeed = { type: makerjs.pathType.BezierSeed, origin: [0,0], end: [1,1], controls: []};
var chain: MakerJs.IChain = {
endless: false,
links: [
{
endPoints: [],
reversed: false,
pathLength: 0,
walkedPath: {
layer: '',
modelContext: model,
offset: p1,
pathContext: paths.line,
pathId: 'x',
route: [],
routeKey: ''
}
}
],
pathLength: 0
};
function testRoot() {
makerjs.version;
makerjs.environment;
makerjs.environmentTypes.BrowserUI;
makerjs.cloneObject({});
makerjs.createRouteKey([]);
makerjs.extendObject({abc:123}, {xyz:789});
makerjs.isChain({});
makerjs.isFunction(function(){});
makerjs.isNumber(0);
makerjs.isObject({});
makerjs.isModel({});
makerjs.isPath({});
makerjs.isPathArc(paths.arc);
makerjs.isPathArcInBezierCurve({});
makerjs.isPathCircle(paths.circle);
makerjs.isPathLine(paths.line);
makerjs.isPoint([]);
makerjs.pathType.Circle;
makerjs.round(44.44444, .01);
makerjs.travel(model, '');
makerjs.unitType.Millimeter;
new makerjs.Collector();
}
function testAngle() {
makerjs.angle.mirror(45, true, false);
makerjs.angle.noRevolutions(90);
makerjs.angle.ofArcEnd(paths.arc);
makerjs.angle.ofArcMiddle(paths.arc);
makerjs.angle.ofArcSpan(paths.arc);
makerjs.angle.ofLineInDegrees(paths.line);
makerjs.angle.ofPointInDegrees([0,0], [1,1]);
makerjs.angle.ofPointInRadians([0,0], [1,1]);
makerjs.angle.toDegrees(Math.PI);
makerjs.angle.toRadians(90);
}
function testExporter() {
new makerjs.exporter.Exporter({});
makerjs.exporter.toDXF(model);
makerjs.exporter.toOpenJsCad(model);
makerjs.exporter.toPDF({} as PDFKit.PDFDocument, model);
makerjs.exporter.toSTL(model);
makerjs.exporter.toSVG(model,
{
annotate: true,
fontSize: '',
origin: [],
scale: 9.9,
stroke: '',
strokeWidth: '',
svgAttrs: {},
units: '',
useSvgPathOnly: false,
viewBox: false
});
makerjs.exporter.toSVGPathData(model);
makerjs.exporter.tryGetModelUnits(model);
}
function testImporter() {
makerjs.importer.fromSVGPathData('');
makerjs.importer.parseNumericList('');
}
function testKit() {
makerjs.kit.construct(null, null);
makerjs.kit.getParameterValues(null);
({} as MakerJs.IMetaParameter).max;
({} as MakerJs.IKit).metaParameters;
({} as MakerJs.IKit).notes;
}
function testMeasure() {
makerjs.measure.boundingHexagon(model).radius;
makerjs.measure.increase(mp, mm);
makerjs.measure.isPointEqual(p1, p2);
makerjs.measure.isPathEqual(paths.line, paths.circle, 4);
makerjs.measure.isAngleEqual(12, 13);
makerjs.measure.isArcConcaveTowardsPoint(paths.arc, [0,0]);
makerjs.measure.isArcOverlapping(paths.arc, paths.arc, true);
makerjs.measure.isBetween(7, 8, 9, false);
makerjs.measure.isBetweenArcAngles(7, paths.arc, false);
makerjs.measure.isBetweenPoints([1,1], paths.line, true);
makerjs.measure.isBezierSeedLinear(seed);
makerjs.measure.isLineOverlapping(paths.line, paths.line, false);
makerjs.measure.isMeasurementOverlapping(mm, mp);
var mm = makerjs.measure.modelExtents(model);
var mp = makerjs.measure.pathExtents(paths.circle);
makerjs.measure.pathLength(paths.line);
makerjs.measure.pointDistance([0,0], [9,9]);
new makerjs.measure.Atlas(model);
mm.low[0];
mm.center;
mp.high[1];
var s = makerjs.measure.lineSlope(paths.line);
makerjs.measure.isPointOnSlope([], s);
makerjs.measure.isSlopeEqual(s, s);
}
function testModel(){
makerjs.model.breakPathsAtIntersections(model, { paths:{ } });
makerjs.model.center(model);
var opts: MakerJs.ICombineOptions = { trimDeadEnds: true, pointMatchingDistance: 2 };
makerjs.model.combine(model, model, true, false, true, false, opts);
makerjs.model.combineIntersection(model, model);
makerjs.model.combineSubtraction(model, model);
makerjs.model.combineUnion(model, model);
makerjs.model.convertUnits(model, makerjs.unitType.Centimeter);
makerjs.model.countChildModels(model);
makerjs.model.detachLoop(model);
makerjs.model.expandPaths(model, 7);
makerjs.model.findChains(model, function (chains: MakerJs.IChain[], loose: MakerJs.IWalkPath[], layer: string) {})
makerjs.model.findLoops(model);
makerjs.model.findSingleChain(model);
makerjs.model.getSimilarModelId(model, 'foo');
makerjs.model.getSimilarPathId(model, 'foo');
makerjs.model.isPathInsideModel(paths.line, model);
makerjs.model.mirror(model, false, true);
makerjs.model.move(makerjs.model.originate(model, [9,9]), [0,0]);
makerjs.model.moveRelative(model, [1,1]);
makerjs.model.originate(model);
makerjs.model.outline(model, 5);
makerjs.model.prefixPathIds(model, 'a');
makerjs.model.removeDeadEnds(model);
makerjs.model.rotate(makerjs.model.scale(model, 6), 45, [0,0]);
makerjs.model.scale(model, 7);
makerjs.model.simplify(model);
makerjs.model.walk(model, {});
makerjs.model.walkPaths(model, (modelContext: MakerJs.IModel, pathId: string, pathContext: MakerJs.IPath) => {});
makerjs.model.zero(model);
model.exporterOptions = { foo: 'bar' };
}
function testModels(): MakerJs.IModel[] {
makerjs.models.BezierCurve.computeLength(seed);
makerjs.models.BezierCurve.computePoint(seed, 0);
makerjs.models.BezierCurve.getBezierSeeds(new makerjs.models.BezierCurve([]));
return [
new makerjs.models.BezierCurve([]),
new makerjs.models.BoltCircle(7, 7, 7, 7),
new makerjs.models.BoltRectangle(2, 2, 2),
new makerjs.models.ConnectTheDots(true, [ [0,0], [1,1] ]),
new makerjs.models.ConnectTheDots([0, 0, 1, 1]),
new makerjs.models.ConnectTheDots(true, [0, 0, 1, 1]),
new makerjs.models.ConnectTheDots(true, '0, 0, 1, 1'),
new makerjs.models.ConnectTheDots('0, 0, 1, 1'),
new makerjs.models.Dogbone(1,1,1),
new makerjs.models.Dome(5, 7),
new makerjs.models.Ellipse(2,2),
new makerjs.models.EllipticArc(2,2,3,4),
new makerjs.models.Holes(1,[]),
new makerjs.models.Oval(7, 7),
new makerjs.models.OvalArc(6, 4, 2, 12, true),
new makerjs.models.Polygon(7, 5),
new makerjs.models.Rectangle(8, 9),
new makerjs.models.Ring(7, 7),
new makerjs.models.RoundRectangle(2, 2, 0),
new makerjs.models.SCurve(5, .9),
new makerjs.models.Slot([0, 0], [1, 1], 7),
new makerjs.models.Square(8),
new makerjs.models.Star(5, 10, 5),
new makerjs.models.Text({} as opentype.Font, 'z', 12)
];
}
function testPath() {
makerjs.path.breakAtPoint(paths.arc, [0,0]).type;
makerjs.path.center(paths.line);
makerjs.path.clone(paths.line);
makerjs.path.converge(paths.line, paths.line);
makerjs.path.distort(paths.arc, 5, 6);
makerjs.path.dogbone(paths.line, paths.line, 7);
makerjs.path.expand(paths.line, 5);
makerjs.path.fillet(paths.arc, paths.line, 4);
makerjs.path.intersection(paths.circle, paths.arc, { excludeTangents: true }).intersectionPoints;
makerjs.path.mirror(paths.arc, true, true);
makerjs.path.move(paths.line, [1,1]);
makerjs.path.moveRelative(paths.circle, [0,0]);
makerjs.path.moveTemporary([], [], function(){});
makerjs.path.rotate(paths.line, 5, [0,0]);
makerjs.path.scale(paths.arc, 8);
makerjs.path.straighten(paths.arc);
makerjs.path.toKeyPoints(paths.arc, 1);
makerjs.path.toPoints(paths.circle, 1);
}
function testPaths() {
var paths = {
arc: new makerjs.paths.Arc([0,0], 7, 0, 180),
circle: new MakerJs.paths.Circle([0,0], 5),
line: new makerjs.paths.Line([0,0], [1,1])
};
new makerjs.paths.Chord(paths.arc);
new makerjs.paths.Parallel(paths.line, 4, [1,1]);
//paths.line.layer = "0";
var x: MakerJs.IPathLine = {
type: "line",
origin: [9,9],
end: [8,8],
layer: "4"
};
return paths;
}
function testPoint() {
makerjs.point.add(p1, p2);
makerjs.point.average(p1, p2);
makerjs.point.clone(p1);
makerjs.point.closest([0,0], [p1, p2]);
makerjs.point.distort([1,1], 2, 3);
makerjs.point.fromAngleOnCircle(22, paths.circle);
makerjs.point.fromArc(paths.arc);
makerjs.point.fromPathEnds(paths.line);
makerjs.point.fromPolar(Math.PI, 7);
makerjs.point.fromSlopeIntersection(new makerjs.paths.Line([]), new makerjs.paths.Line([]));
makerjs.point.middle(paths.line);
makerjs.point.mirror(p1, true, false);
makerjs.point.rotate(p1, 5, p2);
makerjs.point.rounded(p1);
makerjs.point.scale(p2, 8);
makerjs.point.subtract(p2, p1);
makerjs.point.zero();
}
function testChain() {
makerjs.chain.cycle(chain, 7);
makerjs.chain.fillet(chain, 1);
makerjs.chain.reverse(chain);
makerjs.chain.startAt(chain, '');
makerjs.chain.toKeyPoints(chain);
makerjs.chain.toPoints(chain, 1);
}
function testSolvers() {
makerjs.solvers.solveTriangleASA(4, 4, 4);
makerjs.solvers.solveTriangleSSS(9, 9, 9);
}
function testUnits() {
makerjs.units.conversionScale(makerjs.unitType.Centimeter, makerjs.unitType.Foot);
}
}