light-chart
Version:
Charts for mobile visualization.
106 lines (87 loc) • 3.09 kB
JavaScript
const expect = require('chai').expect;
const AxisCircle = require('../../../../src/component/axis/circle');
const Scale = require('../../../../src/scale/index');
const axisGlobal = require('../../../../src/global').axis;
const Util = require('../../../../src/util/common');
const { Group, Text } = require('../../../../src/graphic/index');
const cat = new Scale.Cat({
domain: [ 'a', 'b', 'c' ],
range: [ 0, 0.66 ]
});
const gridPoints = [[{ x: 250, y: 50 }, { x: 250, y: 250 }], [{ x: 450, y: 250 }, { x: 250, y: 250 }]];
const frontContainer = new Group({
zIndex: 2
});
const backContainer = new Group({
zIndex: 1
});
function equal(v1, v2) {
return Math.abs(v1 - v2) < 0.00001;
}
const labels = [];
const ticks = cat.getTicks();
ticks.map(tick => {
const textShape = new Text({
className: 'label-text',
attrs: {
x: 0,
y: 0,
text: tick.text
},
value: tick.value
});
labels.push(textShape);
return textShape;
});
describe('circle axis', function() {
describe('full circle', function() {
const cfg = Util.mix({
frontContainer,
backContainer,
radius: 200,
center: {
x: 250,
y: 250
},
gridPoints,
ticks: cat.getTicks(),
labels
}, axisGlobal.circle);
let axis;
it('init', function() {
axis = new AxisCircle(cfg);
// axis.draw();
expect(axis.ticks.length).equal(cat.getTicks().length);
expect(backContainer.get('children').length).to.equal(2);
});
it('test point', function() {
let point = axis.getOffsetPoint(0);
expect(equal(point.x, 250)).equal(true);
expect(equal(point.y, 50)).equal(true);
point = axis.getOffsetPoint(0.5);
expect(equal(point.x, 250)).equal(true);
expect(equal(point.y, 450)).equal(true);
point = axis.getOffsetPoint(1);
expect(equal(point.x, 250)).equal(true);
expect(equal(point.y, 50)).equal(true);
});
it('test text align', function() {
let point = axis.getOffsetPoint(0);
expect(axis.getTextAlignInfo(point, 15)).eql({ textAlign: 'center', textBaseline: 'bottom' });
expect(axis.getTextAlignInfo(point, -5)).eql({ textAlign: 'center', textBaseline: 'top' });
point = axis.getOffsetPoint(0.5);
expect(axis.getTextAlignInfo(point, 15)).eql({ textAlign: 'center', textBaseline: 'top' });
expect(axis.getTextAlignInfo(point, -5)).eql({ textAlign: 'center', textBaseline: 'bottom' });
point = axis.getOffsetPoint(0.3);
expect(axis.getTextAlignInfo(point, 15)).eql({ textAlign: 'left', textBaseline: 'middle' });
expect(axis.getTextAlignInfo(point, -5)).eql({ textAlign: 'right', textBaseline: 'middle' });
point = axis.getOffsetPoint(0.6);
expect(axis.getTextAlignInfo(point, 15)).eql({ textAlign: 'right', textBaseline: 'middle' });
expect(axis.getTextAlignInfo(point, -5)).eql({ textAlign: 'left', textBaseline: 'middle' });
});
it('test grid', function() {
const grid = axis.grid;
expect(grid.type === 'line');
});
});
});