// Flags: --expose-internals 'use strict'; const common = require('../common'); const { PassThrough } = require('stream'); const readline = require('readline'); const assert = require('assert'); const ctrlU = { ctrl: true, name: 'u' }; common.skipIfDumbTerminal(); { const input = new PassThrough(); const rl = readline.createInterface({ terminal: true, input: input, prompt: '' }); const tests = [ [1, 'a'], [2, 'ab'], [2, '丁'], [0, '\u0301'], // COMBINING ACUTE ACCENT [1, 'a\u0301'], // á [0, '\u20DD'], // COMBINING ENCLOSING CIRCLE [2, 'a\u20DDb'], // a⃝b [0, '\u200E'], // LEFT-TO-RIGHT MARK ]; for (const [cursor, string] of tests) { rl.write(string); assert.strictEqual(rl.getCursorPos().cols, cursor); rl.write(null, ctrlU); } }