node/deps/npm/node_modules/cli-table2/test/layout-manager-test.js
Myles Borins ace4fe566f
deps: update npm to 5.5.1
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>
2017-10-29 21:32:15 -04:00

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});
});
});
});