ModuleLoader.require([ "tinymce/Env", "tinymce/caret/CaretPosition" ], function(Env, CaretPosition) { module("tinymce.caret.CaretPosition"); if (!Env.ceFalse) { return; } var createRange = Utils.createRange, assertCaretPosition = Utils.assertCaretPosition, assertRange = Utils.assertRange; function getRoot() { return document.getElementById('view'); } function setupHtml(html) { tinymce.$(getRoot()).empty(); getRoot().innerHTML = html; } test('Constructor', function() { setupHtml('abc'); strictEqual(new CaretPosition(getRoot(), 0).container(), getRoot()); strictEqual(new CaretPosition(getRoot(), 1).offset(), 1); strictEqual(new CaretPosition(getRoot().firstChild, 0).container(), getRoot().firstChild); strictEqual(new CaretPosition(getRoot().firstChild, 1).offset(), 1); }); test('fromRangeStart', function() { setupHtml('abc'); assertCaretPosition(CaretPosition.fromRangeStart(createRange(getRoot(), 0)), new CaretPosition(getRoot(), 0)); assertCaretPosition(CaretPosition.fromRangeStart(createRange(getRoot(), 1)), new CaretPosition(getRoot(), 1)); assertCaretPosition(CaretPosition.fromRangeStart(createRange(getRoot().firstChild, 1)), new CaretPosition(getRoot().firstChild, 1)); }); test('fromRangeEnd', function() { setupHtml('abc'); assertCaretPosition(CaretPosition.fromRangeEnd(createRange(getRoot(), 0, getRoot(), 1)), new CaretPosition(getRoot(), 1)); assertCaretPosition(CaretPosition.fromRangeEnd(createRange(getRoot().firstChild, 0, getRoot().firstChild, 1)), new CaretPosition(getRoot().firstChild, 1)); }); test('after', function() { setupHtml('abc123'); assertCaretPosition(CaretPosition.after(getRoot().firstChild), new CaretPosition(getRoot(), 1)); assertCaretPosition(CaretPosition.after(getRoot().lastChild), new CaretPosition(getRoot(), 2)); }); test('before', function() { setupHtml('abc123'); assertCaretPosition(CaretPosition.before(getRoot().firstChild), new CaretPosition(getRoot(), 0)); assertCaretPosition(CaretPosition.before(getRoot().lastChild), new CaretPosition(getRoot(), 1)); }); test('isAtStart', function() { setupHtml('abc123123'); ok(new CaretPosition(getRoot(), 0).isAtStart()); ok(!new CaretPosition(getRoot(), 1).isAtStart()); ok(!new CaretPosition(getRoot(), 3).isAtStart()); ok(new CaretPosition(getRoot().firstChild, 0).isAtStart()); ok(!new CaretPosition(getRoot().firstChild, 1).isAtStart()); ok(!new CaretPosition(getRoot().firstChild, 3).isAtStart()); }); test('isAtEnd', function() { setupHtml('abc123123'); ok(new CaretPosition(getRoot(), 3).isAtEnd()); ok(!new CaretPosition(getRoot(), 2).isAtEnd()); ok(!new CaretPosition(getRoot(), 0).isAtEnd()); ok(new CaretPosition(getRoot().firstChild, 3).isAtEnd()); ok(!new CaretPosition(getRoot().firstChild, 0).isAtEnd()); ok(!new CaretPosition(getRoot().firstChild, 1).isAtEnd()); }); test('toRange', function() { setupHtml('abc'); assertRange(new CaretPosition(getRoot(), 0).toRange(), createRange(getRoot(), 0)); assertRange(new CaretPosition(getRoot(), 1).toRange(), createRange(getRoot(), 1)); assertRange(new CaretPosition(getRoot().firstChild, 1).toRange(), createRange(getRoot().firstChild, 1)); }); test('isEqual', function() { setupHtml('abc'); equal(new CaretPosition(getRoot(), 0).isEqual(new CaretPosition(getRoot(), 0)), true); equal(new CaretPosition(getRoot(), 1).isEqual(new CaretPosition(getRoot(), 0)), false); equal(new CaretPosition(getRoot(), 0).isEqual(new CaretPosition(getRoot().firstChild, 0)), false); }); test('isVisible', function() { setupHtml(' abc'); equal(new CaretPosition(getRoot().firstChild.firstChild, 0).isVisible(), false); equal(new CaretPosition(getRoot().firstChild.firstChild, 3).isVisible(), true); }); test('getClientRects', function() { setupHtml( 'abc' + '
123
' + '