diff --git a/src/test/test.js b/src/test/test.js index cad1dfc416..236aae605e 100644 --- a/src/test/test.js +++ b/src/test/test.js @@ -59,15 +59,15 @@ describe('xterm.js', function() { describe('clear', function() { it('should clear a buffer equal to rows', function() { - var promptLine = xterm.lines.get(xterm.ybase + xterm.y); + var promptLine = xterm.buffer.lines.get(xterm.buffer.ybase + xterm.buffer.y); xterm.clear(); - assert.equal(xterm.y, 0); - assert.equal(xterm.ybase, 0); - assert.equal(xterm.ydisp, 0); - assert.equal(xterm.lines.length, xterm.rows); - assert.deepEqual(xterm.lines.get(0), promptLine); + assert.equal(xterm.buffer.y, 0); + assert.equal(xterm.buffer.ybase, 0); + assert.equal(xterm.buffer.ydisp, 0); + assert.equal(xterm.buffer.lines.length, xterm.rows); + assert.deepEqual(xterm.buffer.lines.get(0), promptLine); for (var i = 1; i < xterm.rows; i++) { - assert.deepEqual(xterm.lines.get(i), xterm.blankLine()); + assert.deepEqual(xterm.buffer.lines.get(i), xterm.blankLine()); } }); it('should clear a buffer larger than rows', function() { @@ -76,28 +76,28 @@ describe('xterm.js', function() { xterm.write('test\n'); } - var promptLine = xterm.lines.get(xterm.ybase + xterm.y); + var promptLine = xterm.buffer.lines.get(xterm.buffer.ybase + xterm.buffer.y); xterm.clear(); - assert.equal(xterm.y, 0); - assert.equal(xterm.ybase, 0); - assert.equal(xterm.ydisp, 0); - assert.equal(xterm.lines.length, xterm.rows); - assert.deepEqual(xterm.lines.get(0), promptLine); + assert.equal(xterm.buffer.y, 0); + assert.equal(xterm.buffer.ybase, 0); + assert.equal(xterm.buffer.ydisp, 0); + assert.equal(xterm.buffer.lines.length, xterm.rows); + assert.deepEqual(xterm.buffer.lines.get(0), promptLine); for (var i = 1; i < xterm.rows; i++) { - assert.deepEqual(xterm.lines.get(i), xterm.blankLine()); + assert.deepEqual(xterm.buffer.lines.get(i), xterm.blankLine()); } }); it('should not break the prompt when cleared twice', function() { - var promptLine = xterm.lines.get(xterm.ybase + xterm.y); + var promptLine = xterm.buffer.lines.get(xterm.buffer.ybase + xterm.buffer.y); xterm.clear(); xterm.clear(); - assert.equal(xterm.y, 0); - assert.equal(xterm.ybase, 0); - assert.equal(xterm.ydisp, 0); - assert.equal(xterm.lines.length, xterm.rows); - assert.deepEqual(xterm.lines.get(0), promptLine); + assert.equal(xterm.buffer.y, 0); + assert.equal(xterm.buffer.ybase, 0); + assert.equal(xterm.buffer.ydisp, 0); + assert.equal(xterm.buffer.lines.length, xterm.rows); + assert.deepEqual(xterm.buffer.lines.get(0), promptLine); for (var i = 1; i < xterm.rows; i++) { - assert.deepEqual(xterm.lines.get(i), xterm.blankLine()); + assert.deepEqual(xterm.buffer.lines.get(i), xterm.blankLine()); } }); }); @@ -112,29 +112,29 @@ describe('xterm.js', function() { startYDisp = xterm.rows + 1; }); it('should scroll a single line', function() { - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); xterm.scrollDisp(-1); - assert.equal(xterm.ydisp, startYDisp - 1); + assert.equal(xterm.buffer.ydisp, startYDisp - 1); xterm.scrollDisp(1); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); }); it('should scroll multiple lines', function() { - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); xterm.scrollDisp(-5); - assert.equal(xterm.ydisp, startYDisp - 5); + assert.equal(xterm.buffer.ydisp, startYDisp - 5); xterm.scrollDisp(5); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); }); it('should not scroll beyond the bounds of the buffer', function() { - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); xterm.scrollDisp(1); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); for (var i = 0; i < startYDisp; i++) { xterm.scrollDisp(-1); } - assert.equal(xterm.ydisp, 0); + assert.equal(xterm.buffer.ydisp, 0); xterm.scrollDisp(-1); - assert.equal(xterm.ydisp, 0); + assert.equal(xterm.buffer.ydisp, 0); }); }); @@ -147,18 +147,18 @@ describe('xterm.js', function() { startYDisp = (xterm.rows * 2) + 1; }); it('should scroll a single page', function() { - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); xterm.scrollPages(-1); - assert.equal(xterm.ydisp, startYDisp - (xterm.rows - 1)); + assert.equal(xterm.buffer.ydisp, startYDisp - (xterm.rows - 1)); xterm.scrollPages(1); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); }); it('should scroll a multiple pages', function() { - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); xterm.scrollPages(-2); - assert.equal(xterm.ydisp, startYDisp - (xterm.rows - 1) * 2); + assert.equal(xterm.buffer.ydisp, startYDisp - (xterm.rows - 1) * 2); xterm.scrollPages(2); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); }); }); @@ -169,9 +169,9 @@ describe('xterm.js', function() { } }); it('should scroll to the top', function() { - assert.notEqual(xterm.ydisp, 0); + assert.notEqual(xterm.buffer.ydisp, 0); xterm.scrollToTop(); - assert.equal(xterm.ydisp, 0); + assert.equal(xterm.buffer.ydisp, 0); }); }); @@ -186,13 +186,13 @@ describe('xterm.js', function() { it('should scroll to the bottom', function() { xterm.scrollDisp(-1); xterm.scrollToBottom(); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); xterm.scrollPages(-1); xterm.scrollToBottom(); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); xterm.scrollToTop(); xterm.scrollToBottom(); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); }); }); @@ -209,13 +209,13 @@ describe('xterm.js', function() { stopPropagation: function(){} }; - xterm.ydisp = 0; - xterm.ybase = 40; - assert.notEqual(xterm.ydisp, xterm.ybase); + xterm.buffer.ydisp = 0; + xterm.buffer.ybase = 40; + assert.notEqual(xterm.buffer.ydisp, xterm.buffer.ybase); xterm.keyDown(event); // Ensure that now the terminal is scrolled to bottom - assert.equal(xterm.ydisp, xterm.ybase); + assert.equal(xterm.buffer.ydisp, xterm.buffer.ybase); }); it('should not scroll down, when a custom keydown handler prevents the event', function () { @@ -228,11 +228,11 @@ describe('xterm.js', function() { return false; }); - assert.equal(xterm.ydisp, startYDisp); + assert.equal(xterm.buffer.ydisp, startYDisp); xterm.scrollDisp(-1); - assert.equal(xterm.ydisp, startYDisp - 1); + assert.equal(xterm.buffer.ydisp, startYDisp - 1); xterm.keyDown({ keyCode: 0 }); - assert.equal(xterm.ydisp, startYDisp - 1); + assert.equal(xterm.buffer.ydisp, startYDisp - 1); }); }); }); @@ -570,48 +570,48 @@ describe('xterm.js', function() { var high = String.fromCharCode(0xD800); for (var i=0xDC00; i<=0xDCFF; ++i) { xterm.write(high + String.fromCharCode(i)); - var tchar = xterm.lines.get(0)[0]; + var tchar = xterm.buffer.lines.get(0)[0]; expect(tchar[1]).eql(high + String.fromCharCode(i)); expect(tchar[1].length).eql(2); expect(tchar[2]).eql(1); - expect(xterm.lines.get(0)[1][1]).eql(' '); + expect(xterm.buffer.lines.get(0)[1][1]).eql(' '); xterm.reset(); } }); it('2 characters at last cell', function() { var high = String.fromCharCode(0xD800); for (var i=0xDC00; i<=0xDCFF; ++i) { - xterm.x = xterm.cols - 1; + xterm.buffer.x = xterm.cols - 1; xterm.write(high + String.fromCharCode(i)); - expect(xterm.lines.get(0)[xterm.x-1][1]).eql(high + String.fromCharCode(i)); - expect(xterm.lines.get(0)[xterm.x-1][1].length).eql(2); - expect(xterm.lines.get(1)[0][1]).eql(' '); + expect(xterm.buffer.lines.get(0)[xterm.buffer.x-1][1]).eql(high + String.fromCharCode(i)); + expect(xterm.buffer.lines.get(0)[xterm.buffer.x-1][1].length).eql(2); + expect(xterm.buffer.lines.get(1)[0][1]).eql(' '); xterm.reset(); } }); it('2 characters per cell over line end with autowrap', function() { var high = String.fromCharCode(0xD800); for (var i=0xDC00; i<=0xDCFF; ++i) { - xterm.x = xterm.cols - 1; + xterm.buffer.x = xterm.cols - 1; xterm.wraparoundMode = true; xterm.write('a' + high + String.fromCharCode(i)); - expect(xterm.lines.get(0)[xterm.cols-1][1]).eql('a'); - expect(xterm.lines.get(1)[0][1]).eql(high + String.fromCharCode(i)); - expect(xterm.lines.get(1)[0][1].length).eql(2); - expect(xterm.lines.get(1)[1][1]).eql(' '); + expect(xterm.buffer.lines.get(0)[xterm.cols-1][1]).eql('a'); + expect(xterm.buffer.lines.get(1)[0][1]).eql(high + String.fromCharCode(i)); + expect(xterm.buffer.lines.get(1)[0][1].length).eql(2); + expect(xterm.buffer.lines.get(1)[1][1]).eql(' '); xterm.reset(); } }); it('2 characters per cell over line end without autowrap', function() { var high = String.fromCharCode(0xD800); for (var i=0xDC00; i<=0xDCFF; ++i) { - xterm.x = xterm.cols - 1; + xterm.buffer.x = xterm.cols - 1; xterm.wraparoundMode = false; xterm.write('a' + high + String.fromCharCode(i)); // auto wraparound mode should cut off the rest of the line - expect(xterm.lines.get(0)[xterm.cols-1][1]).eql('a'); - expect(xterm.lines.get(0)[xterm.cols-1][1].length).eql(1); - expect(xterm.lines.get(1)[1][1]).eql(' '); + expect(xterm.buffer.lines.get(0)[xterm.cols-1][1]).eql('a'); + expect(xterm.buffer.lines.get(0)[xterm.cols-1][1].length).eql(1); + expect(xterm.buffer.lines.get(1)[1][1]).eql(' '); xterm.reset(); } }); @@ -620,11 +620,11 @@ describe('xterm.js', function() { for (var i=0xDC00; i<=0xDCFF; ++i) { xterm.write(high); xterm.write(String.fromCharCode(i)); - var tchar = xterm.lines.get(0)[0]; + var tchar = xterm.buffer.lines.get(0)[0]; expect(tchar[1]).eql(high + String.fromCharCode(i)); expect(tchar[1].length).eql(2); expect(tchar[2]).eql(1); - expect(xterm.lines.get(0)[1][1]).eql(' '); + expect(xterm.buffer.lines.get(0)[1][1]).eql(' '); xterm.reset(); } }); @@ -633,30 +633,30 @@ describe('xterm.js', function() { describe('unicode - combining characters', function() { it('café', function () { xterm.write('cafe\u0301'); - expect(xterm.lines.get(0)[3][1]).eql('e\u0301'); - expect(xterm.lines.get(0)[3][1].length).eql(2); - expect(xterm.lines.get(0)[3][2]).eql(1); + expect(xterm.buffer.lines.get(0)[3][1]).eql('e\u0301'); + expect(xterm.buffer.lines.get(0)[3][1].length).eql(2); + expect(xterm.buffer.lines.get(0)[3][2]).eql(1); }); it('café - end of line', function() { - xterm.x = xterm.cols - 1 - 3; + xterm.buffer.x = xterm.cols - 1 - 3; xterm.write('cafe\u0301'); - expect(xterm.lines.get(0)[xterm.cols-1][1]).eql('e\u0301'); - expect(xterm.lines.get(0)[xterm.cols-1][1].length).eql(2); - expect(xterm.lines.get(0)[xterm.cols-1][2]).eql(1); - expect(xterm.lines.get(0)[1][1]).eql(' '); - expect(xterm.lines.get(0)[1][1].length).eql(1); - expect(xterm.lines.get(0)[1][2]).eql(1); + expect(xterm.buffer.lines.get(0)[xterm.cols-1][1]).eql('e\u0301'); + expect(xterm.buffer.lines.get(0)[xterm.cols-1][1].length).eql(2); + expect(xterm.buffer.lines.get(0)[xterm.cols-1][2]).eql(1); + expect(xterm.buffer.lines.get(0)[1][1]).eql(' '); + expect(xterm.buffer.lines.get(0)[1][1].length).eql(1); + expect(xterm.buffer.lines.get(0)[1][2]).eql(1); }); it('multiple combined é', function() { xterm.wraparoundMode = true; xterm.write(Array(100).join('e\u0301')); for (var i=0; i