mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-07 04:39:06 +02:00
1f2fa5c90c
- Calculate the vertices of the shapes so that they are inscribed in the circle that has the radius of `pointRadius` - Remove `translate()` and `rotate()` to fix the regression introduced by #5319 - Refactor `rectRounded` for better performance
90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
'use strict';
|
|
|
|
describe('Chart.helpers.canvas', function() {
|
|
describe('auto', jasmine.fixture.specs('helpers.canvas'));
|
|
|
|
var helpers = Chart.helpers;
|
|
|
|
describe('clear', function() {
|
|
it('should clear the chart canvas', function() {
|
|
var chart = acquireChart({}, {
|
|
canvas: {
|
|
style: 'width: 150px; height: 245px'
|
|
}
|
|
});
|
|
|
|
spyOn(chart.ctx, 'clearRect');
|
|
|
|
helpers.canvas.clear(chart);
|
|
|
|
expect(chart.ctx.clearRect.calls.count()).toBe(1);
|
|
expect(chart.ctx.clearRect.calls.first().object).toBe(chart.ctx);
|
|
expect(chart.ctx.clearRect.calls.first().args).toEqual([0, 0, 150, 245]);
|
|
});
|
|
});
|
|
|
|
describe('roundedRect', function() {
|
|
it('should create a rounded rectangle path', function() {
|
|
var context = window.createMockContext();
|
|
|
|
helpers.canvas.roundedRect(context, 10, 20, 30, 40, 5);
|
|
|
|
expect(context.getCalls()).toEqual([
|
|
{name: 'moveTo', args: [10, 25]},
|
|
{name: 'arc', args: [15, 25, 5, -Math.PI, -Math.PI / 2]},
|
|
{name: 'arc', args: [35, 25, 5, -Math.PI / 2, 0]},
|
|
{name: 'arc', args: [35, 55, 5, 0, Math.PI / 2]},
|
|
{name: 'arc', args: [15, 55, 5, Math.PI / 2, Math.PI]},
|
|
{name: 'closePath', args: []},
|
|
{name: 'moveTo', args: [10, 20]}
|
|
]);
|
|
});
|
|
it('should optimize path if radius is exactly half of height', function() {
|
|
var context = window.createMockContext();
|
|
|
|
helpers.canvas.roundedRect(context, 10, 20, 40, 30, 15);
|
|
|
|
expect(context.getCalls()).toEqual([
|
|
{name: 'moveTo', args: [10, 35]},
|
|
{name: 'moveTo', args: [25, 20]},
|
|
{name: 'arc', args: [35, 35, 15, -Math.PI / 2, Math.PI / 2]},
|
|
{name: 'arc', args: [25, 35, 15, Math.PI / 2, Math.PI * 3 / 2]},
|
|
{name: 'closePath', args: []},
|
|
{name: 'moveTo', args: [10, 20]}
|
|
]);
|
|
});
|
|
it('should optimize path if radius is exactly half of width', function() {
|
|
var context = window.createMockContext();
|
|
|
|
helpers.canvas.roundedRect(context, 10, 20, 30, 40, 15);
|
|
|
|
expect(context.getCalls()).toEqual([
|
|
{name: 'moveTo', args: [10, 35]},
|
|
{name: 'arc', args: [25, 35, 15, -Math.PI, 0]},
|
|
{name: 'arc', args: [25, 45, 15, 0, Math.PI]},
|
|
{name: 'closePath', args: []},
|
|
{name: 'moveTo', args: [10, 20]}
|
|
]);
|
|
});
|
|
it('should optimize path if radius is exactly half of width and height', function() {
|
|
var context = window.createMockContext();
|
|
|
|
helpers.canvas.roundedRect(context, 10, 20, 30, 30, 15);
|
|
|
|
expect(context.getCalls()).toEqual([
|
|
{name: 'moveTo', args: [10, 35]},
|
|
{name: 'arc', args: [25, 35, 15, -Math.PI, Math.PI]},
|
|
{name: 'closePath', args: []},
|
|
{name: 'moveTo', args: [10, 20]}
|
|
]);
|
|
});
|
|
it('should optimize path if radius is 0', function() {
|
|
var context = window.createMockContext();
|
|
|
|
helpers.canvas.roundedRect(context, 10, 20, 30, 40, 0);
|
|
|
|
expect(context.getCalls()).toEqual([{name: 'rect', args: [10, 20, 30, 40]}]);
|
|
});
|
|
});
|
|
});
|