light-chart
Version:
Charts for mobile visualization.
251 lines (216 loc) • 4.15 kB
JavaScript
const expect = require('chai').expect;
const Adjust = require('../../../src/geom/adjust/index');
const Util = require('../../../src/util/common');
describe('stack adjust', function() {
describe('default stack', function() {
const data = [{
a: 1,
b: 2,
c: 1
}, {
a: 1,
b: 3,
c: 2
},
{
a: 2,
b: 1,
c: 1
}, {
a: 2,
b: 4,
c: 2
},
{
a: 3,
b: 5,
c: 1
}, {
a: 3,
b: 1,
c: 2
}
];
const adjust = new Adjust.Stack({
xField: 'a',
yField: 'b'
});
it('init', () => {
expect(adjust.xField).equal('a');
expect(adjust.yField).equal('b');
});
it('process adjust', function() {
adjust.processAdjust([ data ]);
const obj1 = data[0];
expect(obj1.b.length).to.be.equal(2);
expect(obj1.b[0]).to.be.equal(0);
expect(obj1.b[1]).to.be.equal(2);
const obj2 = data[1];
expect(obj2.b[0]).to.be.equal(2);
expect(obj2.b[1]).to.be.equal(5);
});
});
describe('stack array', function() {
const data = [{
a: 1,
b: [ 0, 3 ],
c: 1
}, {
a: 1,
b: [ 3, 4 ],
c: 2
},
{
a: 2,
b: 1,
c: 1
}, {
a: 2,
b: 4,
c: 2
},
{
a: 3,
b: 5,
c: 1
}, {
a: 3,
b: 1,
c: 2
}
];
const adjust = new Adjust.Stack({
xField: 'a',
yField: 'b'
});
it('process adjust', function() {
adjust.processAdjust([ data ]);
const obj1 = data[0];
expect(obj1.b.length).to.be.equal(2);
expect(obj1.b[0]).to.be.equal(0);
expect(obj1.b[1]).to.be.equal(3);
const obj2 = data[1];
expect(obj2.b[0]).to.be.equal(3);
expect(obj2.b[1]).to.be.equal(7);
});
});
describe('stack with 0', function() {
const data = [{
a: 1,
b: 2,
c: 1
}, {
a: 1,
b: 0,
c: 2
},
{
a: 2,
b: 1,
c: 1
}, {
a: 2,
b: 4,
c: 2
},
{
a: 3,
b: 0,
c: 1
}, {
a: 3,
b: 1,
c: 2
}
];
it('adjust result', function() {
const adjust = new Adjust.Stack({
xField: 'a',
yField: 'b'
});
adjust.processAdjust([ data ]);
const obj1 = data[0];
expect(obj1.b.length).to.be.equal(2);
expect(obj1.b[0]).to.be.equal(0);
expect(obj1.b[1]).to.be.equal(2);
const obj2 = data[1];
expect(obj2.b.length).to.be.equal(2);
expect(obj2.b[0]).to.be.equal(2);
expect(obj2.b[1]).to.be.equal(2);
});
});
});
describe('adjust dodge', function() {
describe('default adjust all has two', function() {
const data = [{
a: 1,
b: 2,
c: 1
}, {
a: 1,
b: 3,
c: 2
},
{
a: 2,
b: 1,
c: 1
}, {
a: 2,
b: 4,
c: 2
},
{
a: 3,
b: 5,
c: 1
}, {
a: 3,
b: 1,
c: 2
}
];
const groupData = Util.Array.group(data, 'c');
const adjust = new Adjust.Dodge({
xField: 'a',
marginRatio: 0.5
});
it('init', function() {
expect(adjust.xField).to.be.equal('a');
});
it('process adjust', function() {
adjust.processAdjust(groupData);
expect(groupData.length).to.be.equal(2);
const d1 = groupData[0];
const obj1 = d1[0];
expect(obj1.a).to.be.equal(0.8125);
const obj2 = d1[1];
expect(obj2.a).to.be.equal(1.8125);
});
});
describe('adjust only one group.', function() {
const data = [{
a: 0,
b: 1,
c: 2
}, {
a: 1,
b: 1,
c: 1
}, {
a: 2,
b: 1,
c: 1
}];
const adjust = new Adjust.Dodge({
xField: 'a'
});
const groupData = Util.Array.group(data, 'b');
it('adjust', function() {
adjust.processAdjust(groupData);
expect(groupData[0][0].a).equal(0);
expect(groupData[0][1].a).equal(1);
expect(groupData[0][2].a).equal(2);
});
});
});