diff options
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.js | 163 |
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 |