Progress on reflow smaller with wide chars

This commit is contained in:
Daniel Imms
2019-01-23 21:46:35 -08:00
parent 4843ca5bb8
commit ce69dceee7
4 changed files with 238 additions and 8 deletions
+34 -1
View File
@@ -545,7 +545,40 @@ describe('Buffer', () => {
assert.equal(buffer.lines.get(1).translateToString(false), '语汉语汉语 ');
});
it('should wrap wide characters correctly when reflowing smaller', () => {
// TODO: ..
buffer.fillViewportRows();
buffer.resize(12, 10);
for (let i = 0; i < 12; i += 4) {
buffer.lines.get(0).set(i, [null, '汉', 2, '汉'.charCodeAt(0)]);
buffer.lines.get(1).set(i, [null, '汉', 2, '汉'.charCodeAt(0)]);
}
for (let i = 2; i < 12; i += 4) {
buffer.lines.get(0).set(i, [null, '语', 2, '语'.charCodeAt(0)]);
buffer.lines.get(1).set(i, [null, '语', 2, '语'.charCodeAt(0)]);
}
for (let i = 1; i < 12; i += 2) {
buffer.lines.get(0).set(i, [null, '', 0, undefined]);
buffer.lines.get(1).set(i, [null, '', 0, undefined]);
}
buffer.lines.get(1).isWrapped = true;
// Buffer:
// 汉语汉语汉语 (wrapped)
// 汉语汉语汉语
assert.equal(buffer.lines.get(0).translateToString(true), '汉语汉语汉语');
assert.equal(buffer.lines.get(1).translateToString(true), '汉语汉语汉语');
buffer.resize(11, 10);
assert.equal(buffer.ybase, 0);
assert.equal(buffer.lines.length, 10);
assert.equal(buffer.lines.get(0).translateToString(true), '汉语汉语汉', '1');
assert.equal(buffer.lines.get(1).translateToString(true), '语汉语汉语', '2');
assert.equal(buffer.lines.get(2).translateToString(true), '汉语');
buffer.resize(10, 10);
assert.equal(buffer.lines.get(0).translateToString(true), '汉语汉语汉');
assert.equal(buffer.lines.get(1).translateToString(true), '语汉语汉语');
assert.equal(buffer.lines.get(2).translateToString(true), '汉语');
buffer.resize(9, 10);
assert.equal(buffer.lines.get(0).translateToString(true), '汉语汉语');
assert.equal(buffer.lines.get(1).translateToString(true), '汉语汉语');
assert.equal(buffer.lines.get(2).translateToString(true), '汉语汉语');
});
describe('reflowLarger cases', () => {