Add more complex emoji selection tests

This commit is contained in:
Daniel Imms
2017-09-30 10:00:18 -04:00
parent da4e3e6e9f
commit b1214063d2
+67 -7
View File
@@ -211,14 +211,9 @@ describe('SelectionManager', () => {
assert.equal(selectionManager.selectionText, ' ');
});
it('should treat emojis using the zero-width-joiner as a single word', () => {
// Note that the first 3 emojis include the invisible ZWJ char
buffer.lines.set(0, stringArrayToRow([
' ',
'👨‍', // Note that the first 3 emojis include the invisible ZWJ char
'👩‍',
'👧‍',
'👦',
' ',
'a'
' ', '👨‍', '👩‍', '👧‍', '👦', ' ', 'a'
])); // The a is here to prevent the space being trimmed in selectionText
selectionManager.selectWordAt([0, 0]);
assert.equal(selectionManager.selectionText, ' ');
@@ -235,6 +230,71 @@ describe('SelectionManager', () => {
selectionManager.selectWordAt([5, 0]);
assert.equal(selectionManager.selectionText, ' ');
});
it('should treat emojis and characters joined together as a word', () => {
buffer.lines.set(0, stringToRow(' ⚽ab cd⚽ ef⚽gh')); // The a is here to prevent the space being trimmed in selectionText
selectionManager.selectWordAt([0, 0]);
assert.equal(selectionManager.selectionText, ' ');
selectionManager.selectWordAt([1, 0]);
assert.equal(selectionManager.selectionText, '⚽ab');
selectionManager.selectWordAt([2, 0]);
assert.equal(selectionManager.selectionText, '⚽ab');
selectionManager.selectWordAt([3, 0]);
assert.equal(selectionManager.selectionText, '⚽ab');
selectionManager.selectWordAt([4, 0]);
assert.equal(selectionManager.selectionText, ' ');
selectionManager.selectWordAt([5, 0]);
assert.equal(selectionManager.selectionText, 'cd⚽');
selectionManager.selectWordAt([6, 0]);
assert.equal(selectionManager.selectionText, 'cd⚽');
selectionManager.selectWordAt([7, 0]);
assert.equal(selectionManager.selectionText, 'cd⚽');
selectionManager.selectWordAt([8, 0]);
assert.equal(selectionManager.selectionText, ' ');
selectionManager.selectWordAt([9, 0]);
assert.equal(selectionManager.selectionText, 'ef⚽gh');
selectionManager.selectWordAt([10, 0]);
assert.equal(selectionManager.selectionText, 'ef⚽gh');
selectionManager.selectWordAt([11, 0]);
assert.equal(selectionManager.selectionText, 'ef⚽gh');
selectionManager.selectWordAt([12, 0]);
assert.equal(selectionManager.selectionText, 'ef⚽gh');
selectionManager.selectWordAt([13, 0]);
assert.equal(selectionManager.selectionText, 'ef⚽gh');
});
it('should treat complex emojis and characters joined together as a word', () => {
// This emoji is the flag for England and is made up of: 1F3F4 E0067 E0062 E0065 E006E E0067 E007F
buffer.lines.set(0, stringArrayToRow([
' ', '🏴󠁧󠁢󠁥󠁮󠁧󠁿', 'a', 'b', ' ', 'c', 'd', '🏴󠁧󠁢󠁥󠁮󠁧󠁿', ' ', 'e', 'f', '🏴󠁧󠁢󠁥󠁮󠁧󠁿', 'g', 'h', ' ', 'a'
])); // The a is here to prevent the space being trimmed in selectionText
selectionManager.selectWordAt([0, 0]);
assert.equal(selectionManager.selectionText, ' ');
selectionManager.selectWordAt([1, 0]);
assert.equal(selectionManager.selectionText, '🏴󠁧󠁢󠁥󠁮󠁧󠁿ab');
selectionManager.selectWordAt([2, 0]);
assert.equal(selectionManager.selectionText, '🏴󠁧󠁢󠁥󠁮󠁧󠁿ab');
selectionManager.selectWordAt([3, 0]);
assert.equal(selectionManager.selectionText, '🏴󠁧󠁢󠁥󠁮󠁧󠁿ab');
selectionManager.selectWordAt([4, 0]);
assert.equal(selectionManager.selectionText, ' ');
selectionManager.selectWordAt([5, 0]);
assert.equal(selectionManager.selectionText, 'cd🏴󠁧󠁢󠁥󠁮󠁧󠁿');
selectionManager.selectWordAt([6, 0]);
assert.equal(selectionManager.selectionText, 'cd🏴󠁧󠁢󠁥󠁮󠁧󠁿');
selectionManager.selectWordAt([7, 0]);
assert.equal(selectionManager.selectionText, 'cd🏴󠁧󠁢󠁥󠁮󠁧󠁿');
selectionManager.selectWordAt([8, 0]);
assert.equal(selectionManager.selectionText, ' ');
selectionManager.selectWordAt([9, 0]);
assert.equal(selectionManager.selectionText, 'ef🏴󠁧󠁢󠁥󠁮󠁧󠁿gh');
selectionManager.selectWordAt([10, 0]);
assert.equal(selectionManager.selectionText, 'ef🏴󠁧󠁢󠁥󠁮󠁧󠁿gh');
selectionManager.selectWordAt([11, 0]);
assert.equal(selectionManager.selectionText, 'ef🏴󠁧󠁢󠁥󠁮󠁧󠁿gh');
selectionManager.selectWordAt([12, 0]);
assert.equal(selectionManager.selectionText, 'ef🏴󠁧󠁢󠁥󠁮󠁧󠁿gh');
selectionManager.selectWordAt([13, 0]);
assert.equal(selectionManager.selectionText, 'ef🏴󠁧󠁢󠁥󠁮󠁧󠁿gh');
});
});
});