mirror of
https://github.com/nodejs/node.git
synced 2025-05-16 04:04:17 +00:00

Closes: https://github.com/nodejs/node/pull/16280 PR-URL: https://github.com/nodejs/node/pull/16509 Fixes: https://github.com/nodejs/node/issues/14161 Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Michaël Zasso <targos@protonmail.com>
163 lines
4.3 KiB
JavaScript
163 lines
4.3 KiB
JavaScript
describe('layout-manager',function(){
|
|
var chai = require('chai');
|
|
var expect = chai.expect;
|
|
|
|
var layoutManager = require('../src/layout-manager');
|
|
var layoutTable = layoutManager.layoutTable;
|
|
var addRowSpanCells = layoutManager.addRowSpanCells;
|
|
var maxWidth = layoutManager.maxWidth;
|
|
var Cell = require('../src/cell');
|
|
var RowSpanCell = Cell.RowSpanCell;
|
|
|
|
describe('layoutTable',function(){
|
|
it('sets x and y',function(){
|
|
var table = [
|
|
[{},{}],
|
|
[{},{}]
|
|
];
|
|
|
|
layoutTable(table);
|
|
|
|
expect(table).to.eql([
|
|
[{x:0,y:0},{x:1,y:0}],
|
|
[{x:0,y:1},{x:1,y:1}]
|
|
]);
|
|
|
|
var w = maxWidth(table);
|
|
expect(w).to.equal(2);
|
|
});
|
|
|
|
it('colSpan will push x values to the right',function(){
|
|
var table = [
|
|
[{colSpan:2},{}],
|
|
[{},{colSpan:2}]
|
|
];
|
|
|
|
layoutTable(table);
|
|
|
|
expect(table).to.eql([
|
|
[{x:0,y:0,colSpan:2},{x:2,y:0}],
|
|
[{x:0,y:1},{x:1,y:1,colSpan:2}]
|
|
]);
|
|
|
|
expect(maxWidth(table)).to.equal(3);
|
|
});
|
|
|
|
it('rowSpan will push x values on cells below',function(){
|
|
var table = [
|
|
[{rowSpan:2},{}],
|
|
[{}]
|
|
];
|
|
|
|
layoutTable(table);
|
|
|
|
expect(table).to.eql([
|
|
[{x:0,y:0,rowSpan:2},{x:1,y:0}],
|
|
[{x:1,y:1}]
|
|
]);
|
|
|
|
expect(maxWidth(table)).to.equal(2);
|
|
});
|
|
|
|
it('colSpan and rowSpan together',function(){
|
|
var table = [
|
|
[{rowSpan:2,colSpan:2},{}],
|
|
[{}]
|
|
];
|
|
|
|
layoutTable(table);
|
|
|
|
expect(table).to.eql([
|
|
[{x:0,y:0,rowSpan:2,colSpan:2},{x:2,y:0}],
|
|
[{x:2,y:1}]
|
|
]);
|
|
|
|
expect(maxWidth(table)).to.equal(3);
|
|
});
|
|
|
|
it('complex layout',function(){
|
|
|
|
var table = [
|
|
[{c:'a'},{c:'b'}, {c:'c',rowSpan:3,colSpan:2}, {c:'d'}],
|
|
[{c:'e',rowSpan:2,colSpan:2}, {c:'f'}],
|
|
[ {c:'g'}]
|
|
];
|
|
|
|
layoutTable(table);
|
|
|
|
expect(table).to.eql([
|
|
[{c:'a',y:0,x:0}, {c:'b',y:0,x:1}, {c:'c',y:0,x:2,rowSpan:3,colSpan:2}, {c:'d',y:0,x:4}],
|
|
[{c:'e',rowSpan:2,colSpan:2,y:1,x:0}, {c:'f',y:1,x:4}],
|
|
[{c:'g',y:2,x:4}]
|
|
]);
|
|
|
|
});
|
|
|
|
it('maxWidth of single element',function(){
|
|
var table = [[{}]];
|
|
layoutTable(table)
|
|
expect(maxWidth(table)).to.equal(1);
|
|
});
|
|
});
|
|
|
|
describe('addRowSpanCells',function(){
|
|
it('will insert a rowSpan cell - beginning of line',function(){
|
|
var table = [
|
|
[{x:0,y:0,rowSpan:2},{x:1,y:0}],
|
|
[{x:1,y:1}]
|
|
];
|
|
|
|
addRowSpanCells(table);
|
|
|
|
expect(table[0]).to.eql([{x:0,y:0,rowSpan:2},{x:1,y:0}]);
|
|
expect(table[1].length).to.equal(2);
|
|
expect(table[1][0]).to.be.instanceOf(RowSpanCell);
|
|
expect(table[1][1]).to.eql({x:1,y:1});
|
|
});
|
|
|
|
it('will insert a rowSpan cell - end of line',function(){
|
|
var table = [
|
|
[{x:0,y:0},{x:1,y:0,rowSpan:2}],
|
|
[{x:0,y:1}]
|
|
];
|
|
|
|
addRowSpanCells(table);
|
|
|
|
expect(table[0]).to.eql([{x:0,y:0},{rowSpan:2,x:1,y:0}]);
|
|
expect(table[1].length).to.equal(2);
|
|
expect(table[1][0]).to.eql({x:0,y:1});
|
|
expect(table[1][1]).to.be.instanceOf(RowSpanCell);
|
|
});
|
|
|
|
it('will insert a rowSpan cell - middle of line',function(){
|
|
var table = [
|
|
[{x:0,y:0},{x:1,y:0,rowSpan:2},{x:2,y:0}],
|
|
[{x:0,y:1},{x:2,y:1}]
|
|
];
|
|
|
|
addRowSpanCells(table);
|
|
|
|
expect(table[0]).to.eql([{x:0,y:0},{rowSpan:2,x:1,y:0},{x:2,y:0}]);
|
|
expect(table[1].length).to.equal(3);
|
|
expect(table[1][0]).to.eql({x:0,y:1});
|
|
expect(table[1][1]).to.be.instanceOf(RowSpanCell);
|
|
expect(table[1][2]).to.eql({x:2,y:1});
|
|
});
|
|
|
|
it('will insert a rowSpan cell - multiple on the same line',function(){
|
|
var table = [
|
|
[{x:0,y:0},{x:1,y:0,rowSpan:2},{x:2,y:0,rowSpan:2},{x:3,y:0}],
|
|
[{x:0,y:1},{x:3,y:1}]
|
|
];
|
|
|
|
addRowSpanCells(table);
|
|
|
|
expect(table[0]).to.eql([{x:0,y:0},{rowSpan:2,x:1,y:0},{rowSpan:2,x:2,y:0},{x:3,y:0}]);
|
|
expect(table[1].length).to.equal(4);
|
|
expect(table[1][0]).to.eql({x:0,y:1});
|
|
expect(table[1][1]).to.be.instanceOf(RowSpanCell);
|
|
expect(table[1][2]).to.be.instanceOf(RowSpanCell);
|
|
expect(table[1][3]).to.eql({x:3,y:1});
|
|
});
|
|
});
|
|
}); |