linted tests

This commit is contained in:
John McLear 2021-01-07 20:49:48 +00:00
parent 6d8a28b993
commit 79630c7ab6
6 changed files with 357 additions and 561 deletions

View file

@ -51,207 +51,3 @@ describe('Page Up & Page Down', function () {
await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber()); await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber());
}); });
}); });
describe('Viewport based Page Up/Down', function () {
beforeEach(function (cb) {
helper.newPad({
cb: async () => {
await helper.clearPad();
// 200 lines
await helper.edit(
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n');
cb();
},
});
});
it('page up when top is at 100 and caret is at bottom', async function () {
// by default page down when caret is at end of the document will leave it in the same place.
// viewport based pageup/down changes that
const initialLineNumber = helper.caretLineNumber();
helper.pageDown();
helper.padOuter$('#outerdocbody').parent().scrollTop(100);
helper.pageUp();
await helper.waitForPromise(() => helper.caretLineNumber() < initialLineNumber);
});
it('page down when top is at 0 and caret is at bottom', async function () {
// by default page down when caret is at end of the document will leave it in the same place.
// viewport based pageup/down changes that
const initialLineNumber = helper.caretLineNumber();
helper.padOuter$('#outerdocbody').parent().scrollTop(0);
await helper.waitForPromise(() => helper.padOuter$('#outerdocbody').parent().scrollTop() === 0);
helper.pageUp(); // I think this might not be right..
helper.pageDown();
await helper.waitForPromise(() => (helper
.caretLineNumber() < initialLineNumber) && (helper.caretLineNumber() > 1));
});
});
describe('Shift Page Up/Down', function () {
beforeEach(function (cb) {
helper.newPad({
cb: async () => {
await helper.clearPad();
// 200 lines
await helper.edit(
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n');
cb();
},
});
});
it('highlights lines on shift page down and releases them on page up', async function () {
await helper.edit('xxx', 1); // caret is offset 6
helper.pageUp();
helper.pageDown({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageUp({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Caret');
});
it('highlights lines on shift pg down and maintains first selection on pg up', async function () {
await helper.edit('xxx', 1); // caret is offset 6
helper.pageUp();
helper.pageDown({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageDown({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageUp({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
});
it(`Highlights from end of document on pg up
then releases them on shift pg down`, async function () {
// TODO: JM NEEDS HELP: Why isn't this working? It works if you do the same in browser..
await helper.waitForPromise(() => helper.caretLineNumber() >= 201);
// make sure we're at bottom
helper.pageDown({
pressAndHold: true,
});
await helper.waitForPromise(() => helper.caretLineNumber() >= 201);
helper.pageUp({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageDown({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Caret');
throw new Error('I NEED HELPZ PLZ');
});
it(`highlights from end of document on pg up twice
and retains on single pg down`, async function () {
helper.pageUp({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageUp({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageDown({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
});
it(`highlights from 3rd line on page up twice
should keep highlight`, async function () {
await helper.edit('xxx', 3); // caret is offset 6
helper.pageUp({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageUp({
shift: true,
});
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
});
xit(`highlights range forward then hit page up, selStart should be prior to initial
selStart and selEnd should be the original selStart`, async function () {
// TODO: JM Needs help, need a way to just select this line but it needs direction
// {select} wont cut the mustard
// selStartFocus is internal to rep
});
xit(`highlights (a few lines) range forwards then hit page down, selStart should be initial
selStart and selEnd further than original selEnd`, async function () {
throw new Error('JM TO DO');
});
xit(`highlights (a few lines) range backwards (rep.selFocusAtStart) then hit page up, selEnd
should be initial selStart,
selStart should be less than original selStart`, async function () {
throw new Error('JM TO DO');
});
xit(`highlights (a few lines) range backwards (rep.selFocusAtStart) then hit page down, selStart
should be initial selEnd and selEnd further than original selEnd`, async function () {
throw new Error('JM TO DO');
});
});
describe('Press and Hold Page Up/Down', function () {
beforeEach(function (cb) {
helper.newPad({
cb: async () => {
await helper.clearPad();
// 200 lines
await helper.edit(
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n');
cb();
},
});
});
it('page up press and hold to top', async function () {
// by default page down when caret is at end of the document will leave it in the same place.
// viewport based pageup/down changes that
helper.pageUp({
pressAndHold: true,
});
await helper.waitForPromise(() => helper.caretLineNumber() === 1);
});
it('page down press and hold to bottom', async function () {
// by default page down when caret is at end of the document will leave it in the same place.
// viewport based pageup/down changes that
const initialLineNumber = helper.caretLineNumber();
helper.pageDown({
pressAndHold: true,
});
await helper.waitForPromise(() => helper.caretLineNumber() === initialLineNumber);
});
});

View file

@ -1,55 +1,55 @@
'use strict'; 'use strict';
describe('Line number integrity is kept between page up/down', function () { describe('Line number integrity is kept between page up/down', function () {
beforeEach(function (cb) { beforeEach(function (cb) {
helper.newPad({ helper.newPad({
cb: async () => { cb: async () => {
await helper.clearPad(); await helper.clearPad();
// 200 lines // 200 lines
await helper.edit( await helper.edit(
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'); '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n');
cb(); cb();
}, },
}); });
}); });
const lineHistory = []; const lineHistory = [];
it('Page down x times, then page up and see if lines match', async function () { it('Page down x times, then page up and see if lines match', async function () {
// this places the caret in the first line // this places the caret in the first line
await helper.edit('Line 1', 1); await helper.edit('Line 1', 1);
const currentLineNumber = helper.caretLineNumber(); const currentLineNumber = helper.caretLineNumber();
lineHistory.push(helper.caretLineNumber()); lineHistory.push(helper.caretLineNumber());
helper.pageDown(); helper.pageDown();
await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber()); await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber());
lineHistory.push(helper.caretLineNumber()); lineHistory.push(helper.caretLineNumber());
helper.pageDown(); helper.pageDown();
await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber()); await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber());
lineHistory.push(helper.caretLineNumber()); lineHistory.push(helper.caretLineNumber());
helper.pageDown(); helper.pageDown();
await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber()); await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber());
let futureLineNumber = helper.caretLineNumber(); let futureLineNumber = helper.caretLineNumber();
helper.pageUp(); helper.pageUp();
await helper.waitForPromise(() => futureLineNumber > helper.caretLineNumber()); await helper.waitForPromise(() => futureLineNumber > helper.caretLineNumber());
if (helper.caretLineNumber() !== lineHistory[lineHistory.length - 1]) { if (helper.caretLineNumber() !== lineHistory[lineHistory.length - 1]) {
throw new Error('Line History not being properly maintained on page up #1'); throw new Error('Line History not being properly maintained on page up #1');
} }
lineHistory.pop(); lineHistory.pop();
futureLineNumber = helper.caretLineNumber(); futureLineNumber = helper.caretLineNumber();
helper.pageUp(); helper.pageUp();
await helper.waitForPromise(() => futureLineNumber > helper.caretLineNumber()); await helper.waitForPromise(() => futureLineNumber > helper.caretLineNumber());
if (helper.caretLineNumber() !== lineHistory[lineHistory.length - 1]) { if (helper.caretLineNumber() !== lineHistory[lineHistory.length - 1]) {
throw new Error('Line History not being properly maintained on page up #2'); throw new Error('Line History not being properly maintained on page up #2');
} }
}); });
}); });

View file

@ -1,95 +1,95 @@
'use strict'; 'use strict';
describe(`Really long text line goes to character within text line if text line is last describe(`Really long text line goes to character within text line if text line is last
line in viewport if the second line is also incredibly long`, function () { line in viewport if the second line is also incredibly long`, function () {
beforeEach(function (cb) { beforeEach(function (cb) {
helper.newPad({ helper.newPad({
cb: async () => { cb: async () => {
await helper.clearPad(); await helper.clearPad();
// 200 lines // 200 lines
await helper.edit( await helper.edit(
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world\n ' + 'hello world hello world hello world hello world hello world hello world hello world\n ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'hello world hello world hello world hello world hello world hello world hello world ' + 'hello world hello world hello world hello world hello world hello world hello world ' +
'\n\n\n\n\n\n\n\n\n '); '\n\n\n\n\n\n\n\n\n ');
cb(); cb();
}, },
}); });
}); });
it('Pg down on long line keeps char on the same line but with large X offset', async function () { it('Pg down on long line keeps char on the same line but with large X offset', async function () {
await helper.edit('xxx', 1); // caret is offset 6 await helper.edit('xxx', 1); // caret is offset 6
await helper.waitForPromise(() => { await helper.waitForPromise(() => {
if ((helper.padInner$.document.getSelection().anchorOffset === 0) && if ((helper.padInner$.document.getSelection().anchorOffset === 0) &&
(helper.caretLineNumber() === 1)) { (helper.caretLineNumber() === 1)) {
return true; return true;
} else { } else {
helper.pageUp(); helper.pageUp();
} }
}); });
helper.pageDown(); helper.pageDown();
await helper.waitForPromise(() => { await helper.waitForPromise(() => {
if ((helper.padInner$.document.getSelection().anchorOffset > 0) && if ((helper.padInner$.document.getSelection().anchorOffset > 0) &&
(helper.caretLineNumber() === 1)) { (helper.caretLineNumber() === 1)) {
return true; return true;
} }
}); });
helper.pageUp(); helper.pageUp();
await helper.waitForPromise(() => { await helper.waitForPromise(() => {
if ((helper.padInner$.document.getSelection().anchorOffset > 0) && if ((helper.padInner$.document.getSelection().anchorOffset > 0) &&
(helper.caretLineNumber() === 1)) { (helper.caretLineNumber() === 1)) {
return true; return true;
} }
}); });
}); });
}); });

View file

@ -1,36 +1,36 @@
'use strict'; 'use strict';
describe('Press and Hold Page Up/Down', function () { describe('Press and Hold Page Up/Down', function () {
beforeEach(function (cb) { beforeEach(function (cb) {
helper.newPad({ helper.newPad({
cb: async () => { cb: async () => {
await helper.clearPad(); await helper.clearPad();
// 200 lines // 200 lines
await helper.edit( await helper.edit(
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'); '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n');
cb(); cb();
}, },
}); });
}); });
it('page up press and hold to top', async function () { it('page up press and hold to top', async function () {
// by default page down when caret is at end of the document will leave it in the same place. // by default page down when caret is at end of the document will leave it in the same place.
// viewport based pageup/down changes that // viewport based pageup/down changes that
helper.pageUp({ helper.pageUp({
pressAndHold: true, pressAndHold: true,
}); });
await helper.waitForPromise(() => helper.caretLineNumber() === 1); await helper.waitForPromise(() => helper.caretLineNumber() === 1);
}); });
it('page down press and hold to bottom', async function () { it('page down press and hold to bottom', async function () {
// by default page down when caret is at end of the document will leave it in the same place. // by default page down when caret is at end of the document will leave it in the same place.
// viewport based pageup/down changes that // viewport based pageup/down changes that
const initialLineNumber = helper.caretLineNumber(); const initialLineNumber = helper.caretLineNumber();
helper.pageDown({ helper.pageDown({
pressAndHold: true, pressAndHold: true,
}); });
await helper.waitForPromise(() => helper.caretLineNumber() === initialLineNumber); await helper.waitForPromise(() => helper.caretLineNumber() === initialLineNumber);
}); });
}); });

View file

@ -1,130 +1,130 @@
'use strict'; 'use strict';
describe('Shift Page Up/Down', function () { describe('Shift Page Up/Down', function () {
beforeEach(function (cb) { beforeEach(function (cb) {
helper.newPad({ helper.newPad({
cb: async () => { cb: async () => {
await helper.clearPad(); await helper.clearPad();
// 200 lines // 200 lines
await helper.edit( await helper.edit(
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'); '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n');
cb(); cb();
}, },
}); });
}); });
it('highlights lines on shift page down and releases them on page up', async function () { it('highlights lines on shift page down and releases them on page up', async function () {
await helper.edit('xxx', 1); // caret is offset 6 await helper.edit('xxx', 1); // caret is offset 6
helper.pageUp(); helper.pageUp();
helper.pageDown({ helper.pageDown({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageUp({ helper.pageUp({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Caret'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Caret');
}); });
it('highlights lines on shift pg down and maintains first selection on pg up', async function () { it('highlights lines on shift pg down and maintains first selection on pg up', async function () {
await helper.edit('xxx', 1); // caret is offset 6 await helper.edit('xxx', 1); // caret is offset 6
helper.pageUp(); helper.pageUp();
helper.pageDown({ helper.pageDown({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageDown({ helper.pageDown({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageUp({ helper.pageUp({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
}); });
it(`Highlights from end of document on pg up it(`Highlights from end of document on pg up
then releases them on shift pg down`, async function () { then releases them on shift pg down`, async function () {
// TODO: JM NEEDS HELP: Why isn't this working? It works if you do the same in browser.. // TODO: JM NEEDS HELP: Why isn't this working? It works if you do the same in browser..
await helper.waitForPromise(() => helper.caretLineNumber() >= 201); await helper.waitForPromise(() => helper.caretLineNumber() >= 201);
// make sure we're at bottom // make sure we're at bottom
helper.pageDown({ helper.pageDown({
pressAndHold: true, pressAndHold: true,
}); });
await helper.waitForPromise(() => helper.caretLineNumber() >= 201); await helper.waitForPromise(() => helper.caretLineNumber() >= 201);
helper.pageUp({ helper.pageUp({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageDown({ helper.pageDown({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Caret'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Caret');
throw new Error('I NEED HELPZ PLZ'); throw new Error('I NEED HELPZ PLZ');
}); });
it(`highlights from end of document on pg up twice it(`highlights from end of document on pg up twice
and retains on single pg down`, async function () { and retains on single pg down`, async function () {
helper.pageUp({ helper.pageUp({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageUp({ helper.pageUp({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageDown({ helper.pageDown({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
}); });
it(`highlights from 3rd line on page up twice it(`highlights from 3rd line on page up twice
should keep highlight`, async function () { should keep highlight`, async function () {
await helper.edit('xxx', 3); // caret is offset 6 await helper.edit('xxx', 3); // caret is offset 6
helper.pageUp({ helper.pageUp({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
helper.pageUp({ helper.pageUp({
shift: true, shift: true,
}); });
await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range'); await helper.waitForPromise(() => helper.padInner$.document.getSelection().type === 'Range');
}); });
xit(`highlights range forward then hit page up, selStart should be prior to initial xit(`highlights range forward then hit page up, selStart should be prior to initial
selStart and selEnd should be the original selStart`, async function () { selStart and selEnd should be the original selStart`, async function () {
// TODO: JM Needs help, need a way to just select this line but it needs direction // TODO: JM Needs help, need a way to just select this line but it needs direction
// {select} wont cut the mustard // {select} wont cut the mustard
// selStartFocus is internal to rep // selStartFocus is internal to rep
}); });
xit(`highlights (a few lines) range forwards then hit page down, selStart should be initial xit(`highlights (a few lines) range forwards then hit page down, selStart should be initial
selStart and selEnd further than original selEnd`, async function () { selStart and selEnd further than original selEnd`, async function () {
throw new Error('JM TO DO'); throw new Error('JM TO DO');
}); });
xit(`highlights (a few lines) range backwards (rep.selFocusAtStart) then hit page up, selEnd xit(`highlights (a few lines) range backwards (rep.selFocusAtStart) then hit page up, selEnd
should be initial selStart, should be initial selStart,
selStart should be less than original selStart`, async function () { selStart should be less than original selStart`, async function () {
throw new Error('JM TO DO'); throw new Error('JM TO DO');
}); });
xit(`highlights (a few lines) range backwards (rep.selFocusAtStart) then hit page down, selStart xit(`highlights (a few lines) range backwards (rep.selFocusAtStart) then hit page down, selStart
should be initial selEnd and selEnd further than original selEnd`, async function () { should be initial selEnd and selEnd further than original selEnd`, async function () {
throw new Error('JM TO DO'); throw new Error('JM TO DO');
}); });
}); });

View file

@ -1,41 +1,41 @@
'use strict'; 'use strict';
describe('Viewport based Page Up/Down', function () { describe('Viewport based Page Up/Down', function () {
beforeEach(function (cb) { beforeEach(function (cb) {
helper.newPad({ helper.newPad({
cb: async () => { cb: async () => {
await helper.clearPad(); await helper.clearPad();
// 200 lines // 200 lines
await helper.edit( await helper.edit(
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'); '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n');
cb(); cb();
}, },
}); });
}); });
it('page up when top is at 100 and caret is at bottom', async function () { it('page up when top is at 100 and caret is at bottom', async function () {
// by default page down when caret is at end of the document will leave it in the same place. // by default page down when caret is at end of the document will leave it in the same place.
// viewport based pageup/down changes that // viewport based pageup/down changes that
const initialLineNumber = helper.caretLineNumber(); const initialLineNumber = helper.caretLineNumber();
helper.pageDown(); helper.pageDown();
helper.padOuter$('#outerdocbody').parent().scrollTop(100); helper.padOuter$('#outerdocbody').parent().scrollTop(100);
helper.pageUp(); helper.pageUp();
await helper.waitForPromise(() => helper.caretLineNumber() < initialLineNumber); await helper.waitForPromise(() => helper.caretLineNumber() < initialLineNumber);
}); });
it('page down when top is at 0 and caret is at bottom', async function () { it('page down when top is at 0 and caret is at bottom', async function () {
// by default page down when caret is at end of the document will leave it in the same place. // by default page down when caret is at end of the document will leave it in the same place.
// viewport based pageup/down changes that // viewport based pageup/down changes that
const initialLineNumber = helper.caretLineNumber(); const initialLineNumber = helper.caretLineNumber();
helper.padOuter$('#outerdocbody').parent().scrollTop(0); helper.padOuter$('#outerdocbody').parent().scrollTop(0);
await helper.waitForPromise(() => helper.padOuter$('#outerdocbody').parent().scrollTop() === 0); await helper.waitForPromise(() => helper.padOuter$('#outerdocbody').parent().scrollTop() === 0);
helper.pageUp(); // I think this might not be right.. helper.pageUp(); // I think this might not be right..
helper.pageDown(); helper.pageDown();
await helper.waitForPromise(() => (helper await helper.waitForPromise(() => (helper
.caretLineNumber() < initialLineNumber) && (helper.caretLineNumber() > 1)); .caretLineNumber() < initialLineNumber) && (helper.caretLineNumber() > 1));
}); });
}); });