mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-07 12:49:07 +02:00
94 lines
2.6 KiB
JavaScript
94 lines
2.6 KiB
JavaScript
|
import BasicChartWebWorker from 'web-worker:../BasicChartWebWorker'; // eslint-disable-line import/no-unresolved
|
||
|
|
||
|
describe('Platform.basic', function() {
|
||
|
|
||
|
it('should automatically choose the BasicPlatform for offscreen canvas', function() {
|
||
|
const chart = acquireChart({type: 'line'}, {useOffscreenCanvas: true});
|
||
|
|
||
|
expect(chart.platform).toBeInstanceOf(Chart.platforms.BasicPlatform);
|
||
|
|
||
|
chart.destroy();
|
||
|
});
|
||
|
|
||
|
it('supports choosing the BasicPlatform in a web worker', function(done) {
|
||
|
const canvas = document.createElement('canvas');
|
||
|
if (!canvas.transferControlToOffscreen) {
|
||
|
pending();
|
||
|
}
|
||
|
const offscreenCanvas = canvas.transferControlToOffscreen();
|
||
|
|
||
|
const worker = new BasicChartWebWorker();
|
||
|
worker.onmessage = (event) => {
|
||
|
worker.terminate();
|
||
|
const {type, errorMessage} = event.data;
|
||
|
if (type === 'error') {
|
||
|
done.fail(errorMessage);
|
||
|
} else if (type === 'success') {
|
||
|
expect(type).toEqual('success');
|
||
|
done();
|
||
|
} else {
|
||
|
done.fail('invalid message type sent by worker: ' + type);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
worker.postMessage({type: 'initialize', canvas: offscreenCanvas}, [offscreenCanvas]);
|
||
|
});
|
||
|
|
||
|
describe('with offscreenCanvas', function() {
|
||
|
it('supports laying out a simple chart', function() {
|
||
|
const chart = acquireChart({
|
||
|
type: 'bar',
|
||
|
data: {
|
||
|
datasets: [
|
||
|
{data: [10, 5, 0, 25, 78, -10]}
|
||
|
],
|
||
|
labels: ['tick1', 'tick2', 'tick3', 'tick4', 'tick5', 'tick6']
|
||
|
}
|
||
|
}, {
|
||
|
canvas: {
|
||
|
height: 150,
|
||
|
width: 250
|
||
|
},
|
||
|
useOffscreenCanvas: true,
|
||
|
});
|
||
|
|
||
|
expect(chart.platform).toBeInstanceOf(Chart.platforms.BasicPlatform);
|
||
|
|
||
|
expect(chart.chartArea.bottom).toBeCloseToPixel(120);
|
||
|
expect(chart.chartArea.left).toBeCloseToPixel(34);
|
||
|
expect(chart.chartArea.right).toBeCloseToPixel(247);
|
||
|
expect(chart.chartArea.top).toBeCloseToPixel(32);
|
||
|
});
|
||
|
|
||
|
it('supports resizing a chart', function() {
|
||
|
const chart = acquireChart({
|
||
|
type: 'bar',
|
||
|
data: {
|
||
|
datasets: [
|
||
|
{data: [10, 5, 0, 25, 78, -10]}
|
||
|
],
|
||
|
labels: ['tick1', 'tick2', 'tick3', 'tick4', 'tick5', 'tick6']
|
||
|
}
|
||
|
}, {
|
||
|
canvas: {
|
||
|
height: 150,
|
||
|
width: 250
|
||
|
},
|
||
|
useOffscreenCanvas: true,
|
||
|
});
|
||
|
|
||
|
expect(chart.platform).toBeInstanceOf(Chart.platforms.BasicPlatform);
|
||
|
|
||
|
const canvasElement = chart.canvas;
|
||
|
canvasElement.height = 200;
|
||
|
canvasElement.width = 300;
|
||
|
chart.resize();
|
||
|
|
||
|
expect(chart.chartArea.bottom).toBeCloseToPixel(150);
|
||
|
expect(chart.chartArea.left).toBeCloseToPixel(34);
|
||
|
expect(chart.chartArea.right).toBeCloseToPixel(297);
|
||
|
expect(chart.chartArea.top).toBeCloseToPixel(32);
|
||
|
});
|
||
|
});
|
||
|
});
|