X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/5f121e33df901aa33a79b2896e79759da6411948..b54134dba23e4a09a31655ff6697eacb915659bb:/src/smartxml/fragments.test.js?ds=sidebyside
diff --git a/src/smartxml/fragments.test.js b/src/smartxml/fragments.test.js
new file mode 100644
index 0000000..8cd6a58
--- /dev/null
+++ b/src/smartxml/fragments.test.js
@@ -0,0 +1,82 @@
+define(function(require) {
+
+'use strict';
+/* global describe, it */
+/* jshint expr:true */
+
+
+var chai = require('libs/chai'),
+ smartxml = require('./smartxml.js');
+
+
+var expect = chai.expect;
+
+var getDocumentFromXML = function(xml) {
+ return smartxml.documentFromXML(xml);
+};
+
+describe('Fragments API', function() {
+ describe('node fragment', function() {
+ it('describes a single node', function() {
+ var doc = getDocumentFromXML('Alice');
+
+ var fragment = doc.createFragment(doc.CaretFragment, {node: doc.root.contents()[0], offset: 1});
+
+ expect(fragment instanceof fragment.CaretFragment).to.be.true;
+ expect(fragment instanceof fragment.NodeFragment).to.be.true;
+ expect(fragment.node.getText()).to.equal('Alice');
+ expect(fragment.offset).to.equal(1);
+ });
+ });
+
+ describe('text range fragment', function() {
+ it('describes fragment of a text node', function() {
+ var doc = getDocumentFromXML(''),
+ textNode = doc.root.contents()[0];
+
+ var fragment = doc.createFragment(doc.TextRangeFragment, {
+ node1: textNode,
+ offset1: 4,
+ node2: textNode,
+ offset2: 1
+ });
+
+ expect(fragment instanceof fragment.TextRangeFragment).to.be.true;
+ expect(fragment instanceof fragment.RangeFragment).to.be.true;
+ expect(fragment.startNode.getText()).to.equal('Alice');
+ expect(fragment.startOffset).to.equal(1);
+ expect(fragment.endNode.getText()).to.equal('Alice');
+ expect(fragment.endOffset).to.equal(4);
+ });
+ it('describes text spanning multiple nodes', function() {
+ var doc = getDocumentFromXML(''),
+ textNode1 = doc.root.contents()[0],
+ textNode2 = doc.root.contents()[2];
+
+ var fragment = doc.createFragment(doc.TextRangeFragment, {
+ node1: textNode2,
+ offset1: 4,
+ node2: textNode1,
+ offset2: 1
+ });
+
+ expect(fragment instanceof fragment.TextRangeFragment).to.be.true;
+ expect(fragment.startNode.getText()).to.equal('Alice ');
+ expect(fragment.startOffset).to.equal(1);
+ expect(fragment.endNode.getText()).to.equal(' a cat!');
+ expect(fragment.endOffset).to.equal(4);
+ });
+ });
+});
+
+});
\ No newline at end of file