X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/6319abb90c8c46ec4223817f53b5cb1f357ada05..1c476cf2d7cf15901a233c86a41e64daba7e0b31:/modules/documentCanvas/canvas/canvas.test3.js diff --git a/modules/documentCanvas/canvas/canvas.test3.js b/modules/documentCanvas/canvas/canvas.test3.js index fc390ec..3c53f09 100644 --- a/modules/documentCanvas/canvas/canvas.test3.js +++ b/modules/documentCanvas/canvas/canvas.test3.js @@ -2,8 +2,9 @@ define([ 'libs/chai', 'libs/sinon', 'modules/documentCanvas/canvas/canvas', -'modules/documentCanvas/canvas/documentElement' -], function(chai, sinon, canvas, documentElement) { +'modules/documentCanvas/canvas/documentElement', +'modules/documentCanvas/canvas/utils' +], function(chai, sinon, canvas, documentElement, utils) { 'use strict'; @@ -1111,6 +1112,25 @@ describe('Canvas', function() { expect(cursor.isSelectingSiblings()).to.equal(false, '"has" and "big" are not children'); }) + + describe('zero width space handling', function() { + it('position range includes ZWS at the boundries of text in case when native selection api doesn\'t', function() { + var c = canvas.fromXML("
Alice
"), + dom = c.doc().dom(), + textNode = findTextNode(dom, 'Alice'), + cursor = c.getCursor(); + + textNode.data = utils.unicode.ZWS + 'Alice'; + getSelection.returns({anchorNode: textNode, anchorOffset: 1, focusNode: textNode, focusOffset: 1}); + expect(cursor.getPosition().offset).to.equal(0); + expect(cursor.getPosition().offsetAtBeginning).to.equal(true, 'offset at beginning'); + + textNode.data = 'Alice' + utils.unicode.ZWS; + getSelection.returns({anchorNode: textNode, anchorOffset: 5, focusNode: textNode, focusOffset: 5}); + expect(cursor.getPosition().offset).to.equal(6); + expect(cursor.getPosition().offsetAtEnd).to.equal(true, 'offset at end'); + }); + }); }); describe('Serializing document to WLXML', function() {