Further IO tests added
This commit is contained in:
parent
05160227a3
commit
8c0e23e196
@ -37,6 +37,18 @@ const ALL_BYTES = [
|
||||
|
||||
const PUA_CHARS = "\ue000\ue001\uf8fe\uf8ff";
|
||||
|
||||
const MULTI_LINE_STRING =`"You know," said Arthur, "it's at times like this, when I'm trapped in a Vogon airlock with a man from Betelgeuse, and about to die of asphyxiation in deep space that I really wish I'd listened to what my mother told me when I was young."
|
||||
"Why, what did she tell you?"
|
||||
"I don't know, I didn't listen."`;
|
||||
|
||||
const SELECTABLE_STRING = `ONE
|
||||
two
|
||||
ONE
|
||||
three
|
||||
ONE
|
||||
four
|
||||
ONE`;
|
||||
|
||||
// Descriptions for named control characters
|
||||
const CONTROL_CHAR_NAMES = {
|
||||
0: "null",
|
||||
@ -117,9 +129,7 @@ module.exports = {
|
||||
|
||||
"Adding content": browser => {
|
||||
/* Status bar updates correctly */
|
||||
setInput(browser, `"You know," said Arthur, "it's at times like this, when I'm trapped in a Vogon airlock with a man from Betelgeuse, and about to die of asphyxiation in deep space that I really wish I'd listened to what my mother told me when I was young."
|
||||
"Why, what did she tell you?"
|
||||
"I don't know, I didn't listen."`);
|
||||
setInput(browser, MULTI_LINE_STRING);
|
||||
|
||||
browser.expect.element("#input-text .cm-status-bar .stats-length-value").text.to.equal("301");
|
||||
browser.expect.element("#input-text .cm-status-bar .stats-lines-value").text.to.equal("3");
|
||||
@ -293,17 +303,120 @@ module.exports = {
|
||||
},
|
||||
|
||||
"Highlighting": browser => {
|
||||
/* Selecting text also selects other instances */
|
||||
/* Selecting input text highlights in output */
|
||||
setInput(browser, SELECTABLE_STRING);
|
||||
bake(browser);
|
||||
|
||||
/* Selecting input text also selects other instances in input and output */
|
||||
browser // Input
|
||||
.click("#auto-bake-label")
|
||||
.doubleClick("#input-text .cm-content .cm-line:nth-of-type(1)")
|
||||
.waitForElementVisible("#input-text .cm-selectionLayer .cm-selectionBackground")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line:nth-of-type(1) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line:nth-of-type(2) .cm-selectionMatch")
|
||||
.waitForElementVisible("#input-text .cm-content .cm-line:nth-of-type(3) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line:nth-of-type(4) .cm-selectionMatch")
|
||||
.waitForElementVisible("#input-text .cm-content .cm-line:nth-of-type(5) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line:nth-of-type(6) .cm-selectionMatch")
|
||||
.waitForElementVisible("#input-text .cm-content .cm-line:nth-of-type(7) .cm-selectionMatch");
|
||||
|
||||
browser // Output
|
||||
.waitForElementVisible("#output-text .cm-selectionLayer .cm-selectionBackground")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line:nth-of-type(1) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line:nth-of-type(2) .cm-selectionMatch")
|
||||
.waitForElementVisible("#output-text .cm-content .cm-line:nth-of-type(3) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line:nth-of-type(4) .cm-selectionMatch")
|
||||
.waitForElementVisible("#output-text .cm-content .cm-line:nth-of-type(5) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line:nth-of-type(6) .cm-selectionMatch")
|
||||
.waitForElementVisible("#output-text .cm-content .cm-line:nth-of-type(7) .cm-selectionMatch");
|
||||
|
||||
/* Selecting output text highlights in input */
|
||||
browser // Output
|
||||
.click("#output-text")
|
||||
.waitForElementNotPresent("#input-text .cm-selectionLayer .cm-selectionBackground")
|
||||
.waitForElementNotPresent("#output-text .cm-selectionLayer .cm-selectionBackground")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line .cm-selectionMatch")
|
||||
.doubleClick("#output-text .cm-content .cm-line:nth-of-type(7)")
|
||||
.waitForElementVisible("#output-text .cm-selectionLayer .cm-selectionBackground")
|
||||
.waitForElementVisible("#output-text .cm-content .cm-line:nth-of-type(1) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line:nth-of-type(2) .cm-selectionMatch")
|
||||
.waitForElementVisible("#output-text .cm-content .cm-line:nth-of-type(3) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line:nth-of-type(4) .cm-selectionMatch")
|
||||
.waitForElementVisible("#output-text .cm-content .cm-line:nth-of-type(5) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line:nth-of-type(6) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#output-text .cm-content .cm-line:nth-of-type(7) .cm-selectionMatch");
|
||||
|
||||
browser // Input
|
||||
.waitForElementVisible("#input-text .cm-selectionLayer .cm-selectionBackground")
|
||||
.waitForElementVisible("#input-text .cm-content .cm-line:nth-of-type(1) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line:nth-of-type(2) .cm-selectionMatch")
|
||||
.waitForElementVisible("#input-text .cm-content .cm-line:nth-of-type(3) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line:nth-of-type(4) .cm-selectionMatch")
|
||||
.waitForElementVisible("#input-text .cm-content .cm-line:nth-of-type(5) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line:nth-of-type(6) .cm-selectionMatch")
|
||||
.waitForElementNotPresent("#input-text .cm-content .cm-line:nth-of-type(7) .cm-selectionMatch");
|
||||
|
||||
// Turn autobake off again
|
||||
browser.click("#auto-bake-label");
|
||||
},
|
||||
|
||||
"Character encoding": browser => {
|
||||
const CHINESE_CHARS = "不要恐慌。";
|
||||
/* Dropup works */
|
||||
/* Selecting changes output correctly */
|
||||
setInput(browser, CHINESE_CHARS, false);
|
||||
setChrEnc(browser, "input", "UTF-8");
|
||||
bake(browser);
|
||||
expectOutput(browser, "\u00E4\u00B8\u008D\u00E8\u00A6\u0081\u00E6\u0081\u0090\u00E6\u0085\u008C\u00E3\u0080\u0082");
|
||||
|
||||
/* Changing output to match input works as expected */
|
||||
setChrEnc(browser, "output", "UTF-8");
|
||||
bake(browser);
|
||||
expectOutput(browser, CHINESE_CHARS);
|
||||
|
||||
/* Encodings appear in the URL */
|
||||
browser.assert.urlContains("ienc=65001");
|
||||
browser.assert.urlContains("oenc=65001");
|
||||
|
||||
/* Preserved when changing tabs */
|
||||
browser
|
||||
.click("#btn-new-tab")
|
||||
.waitForElementVisible("#input-tabs li:nth-of-type(2).active-input-tab");
|
||||
browser.expect.element("#input-text .chr-enc-value").text.that.equals("Raw Bytes");
|
||||
browser.expect.element("#output-text .chr-enc-value").text.that.equals("Raw Bytes");
|
||||
|
||||
setChrEnc(browser, "input", "UTF-7");
|
||||
setChrEnc(browser, "output", "UTF-7");
|
||||
|
||||
browser
|
||||
.click("#input-tabs li:nth-of-type(1)")
|
||||
.waitForElementVisible("#input-tabs li:nth-of-type(1).active-input-tab");
|
||||
browser.expect.element("#input-text .chr-enc-value").text.that.equals("UTF-8");
|
||||
browser.expect.element("#output-text .chr-enc-value").text.that.equals("UTF-8");
|
||||
|
||||
/* Try various encodings */
|
||||
// These are not meant to be realistic encodings for this data
|
||||
setInput(browser, CHINESE_CHARS, false);
|
||||
setChrEnc(browser, "input", "UTF-8");
|
||||
setChrEnc(browser, "output", "UTF-16LE");
|
||||
bake(browser);
|
||||
expectOutput(browser, "\uB8E4\uE88D\u81A6\u81E6\uE690\u8C85\u80E3");
|
||||
|
||||
setChrEnc(browser, "output", "Simplified Chinese GBK");
|
||||
bake(browser);
|
||||
expectOutput(browser, "\u6D93\u5D88\uFDFF\u93AD\u612D\u53A1\u9286\u0000");
|
||||
|
||||
setChrEnc(browser, "input", "UTF-7");
|
||||
bake(browser);
|
||||
expectOutput(browser, "+Tg0-+iYE-+YFA-+YUw-");
|
||||
|
||||
setChrEnc(browser, "input", "Traditional Chinese Big5");
|
||||
bake(browser);
|
||||
expectOutput(browser, "\u3043\u74B6\uFDFF\u7A3A\uFDFF");
|
||||
|
||||
setChrEnc(browser, "output", "Windows-1251 Cyrillic");
|
||||
bake(browser);
|
||||
expectOutput(browser, "\u00A4\u0408\u00ADn\u00AE\u0408\u00B7W\u040EC");
|
||||
},
|
||||
|
||||
"Line endings": browser => {
|
||||
@ -484,3 +597,15 @@ function loadRecipe(browser, opName, input, args) {
|
||||
.urlHash("recipe=" + recipeConfig)
|
||||
.waitForElementPresent("#rec-list li.operation");
|
||||
}
|
||||
|
||||
/** @function
|
||||
* Tests whether the output matches a given value
|
||||
*
|
||||
* @param {Browser} browser - Nightwatch client
|
||||
* @param {string} expected - The expected output value
|
||||
*/
|
||||
function expectOutput(browser, expected) {
|
||||
browser.execute(expected => {
|
||||
return expected === window.app.manager.output.outputEditorView.state.doc.toString();
|
||||
}, [expected]);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user