summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/cli-table2/test/layout-manager-test.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/cli-table2/test/layout-manager-test.js')
-rw-r--r--deps/npm/node_modules/cli-table2/test/layout-manager-test.js163
1 files changed, 163 insertions, 0 deletions
diff --git a/deps/npm/node_modules/cli-table2/test/layout-manager-test.js b/deps/npm/node_modules/cli-table2/test/layout-manager-test.js
new file mode 100644
index 0000000000..362f348e0e
--- /dev/null
+++ b/deps/npm/node_modules/cli-table2/test/layout-manager-test.js
@@ -0,0 +1,163 @@
+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});
+ });
+ });
+}); \ No newline at end of file