skia2/modules/pathkit/tests/util.spec.js
Kevin Lubick e71e9ef311 [canvaskit] Add catchException everywhere
This should make the logs in the bots more actionable by showing
the error and trace.

This also fixes the API change causing mysterious red.

Bug: skia:
Change-Id: I38df2bb4557041f8bdfefcae5c8d95b58e770033
Reviewed-on: https://skia-review.googlesource.com/c/168180
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2018-11-05 13:07:02 +00:00

67 lines
2.2 KiB
JavaScript

// Tests for util-related things
describe('PathKit\'s CubicMap Behavior', function() {
// Note, don't try to print the PathKit object - it can cause Karma/Jasmine to lock up.
var PathKit = null;
const LoadPathKit = new Promise(function(resolve, reject) {
if (PathKit) {
resolve();
} else {
PathKitInit({
locateFile: (file) => '/pathkit/'+file,
}).then((_PathKit) => {
PathKit = _PathKit;
resolve();
});
}
});
it('computes YFromX correctly', function(done) {
LoadPathKit.then(catchException(done, () => {
// Spot check a few points
const testcases = [
// input x, expected y
[0.025391, 0.117627],
[0.333984, 0.276221],
[0.662109, 0.366052],
[0.939453, 0.643296],
];
for (tc of testcases) {
expect(PathKit.cubicYFromX(0, 0.5, 1.0, 0, tc[0])).toBeCloseTo(tc[1], 5);
}
done();
}));
});
it('computes a point from T correctly', function(done) {
LoadPathKit.then(catchException(done, () => {
// Spot check a few points
const testcases = [
// input t, expected x, expected y
[0.25, [0.128125, 0.240625]],
[0.5, [0.35, 0.35]],
[0.75, [0.646875, 0.534375]],
[1.0, [1.0, 1.0]],
];
for (tc of testcases) {
let ans = PathKit.cubicPtFromT(0.1, 0.5, 0.5, 0.1, tc[0]);
expect(ans).toBeTruthy();
expect(ans.length).toBe(2);
expect(ans[0]).toBeCloseTo(tc[1][0]);
expect(ans[1]).toBeCloseTo(tc[1][1]);
}
done();
}));
});
it('does not leak, with or without cache', function(done) {
LoadPathKit.then(catchException(done, () => {
// Run it a lot to make sure we don't leak.
for (let i = 0; i < 300000; i++) {
PathKit.cubicYFromX(0.1, 0.5, 0.5, 0.1, 0.1);
PathKit.cubicPtFromT(0.1, 0.5, 0.5, 0.1, 0.1);
}
done();
}));
});
});