test more jQuery cases

This commit is contained in:
David Greenspan
2013-09-03 20:09:25 -07:00
parent b2696e9a7c
commit 1c223b3606
2 changed files with 49 additions and 19 deletions

View File

@@ -192,6 +192,9 @@ var DomRange = function (component) {
_extend(DomRange.prototype, {
getNodes: function () {
if (! this.parentNode())
return [];
this.refresh();
var afterNode = this.end.nextSibling;
@@ -203,6 +206,9 @@ _extend(DomRange.prototype, {
return nodes;
},
removeAll: function () {
if (! this.parentNode())
return;
this.refresh();
// leave start and end
@@ -494,6 +500,9 @@ _extend(DomRange.prototype, {
// see `getInsertionPoint`. Adding multiple members
// at once using `add(array)` is faster.
refresh: function () {
var parentNode = this.parentNode();
if (! parentNode)
return;
// Using `eachMember`, do several things:
// - Refresh all member ranges
@@ -520,7 +529,6 @@ _extend(DomRange.prototype, {
numMembers++;
});
var parentNode = this.parentNode();
var firstNode = null;
var lastNode = null;

View File

@@ -1027,6 +1027,8 @@ Tinytest.add("ui - DomRange - structural removal", function (test) {
test.isTrue(f.isRemoved);
test.isTrue(h.isRemoved);
test.isTrue(k.isRemoved);
r.removeAll();
}
});
});
@@ -1039,26 +1041,46 @@ Tinytest.add("ui - DomRange - noticed removal", function (test) {
Tinytest.add("ui - DomRange - jQuery removal", function (test) {
inDocument(htmlRange("<div></div>"), function (r) {
var g = document.createElement("DIV");
var h = new DomRange;
var i = document.createElement("DIV");
var j = document.createElement("DIV");
var k = new DomRange;
r.add('g', g);
DomRange.insert(h, g);
h.add(i);
DomRange.insert(k, j);
i.appendChild(j);
test.isFalse(h.isRemoved);
test.isFalse(k.isRemoved);
for (var scenario = 0; scenario < 3; scenario++) {
var f = document.createElement("DIV");
var g = document.createElement("DIV");
var h = new DomRange;
var i = document.createElement("DIV");
var j = document.createElement("DIV");
var k = new DomRange;
r.add(f);
f.appendChild(g);
DomRange.insert(h, g);
h.add(i);
DomRange.insert(k, j);
i.appendChild(j);
test.isFalse(h.isRemoved);
test.isFalse(k.isRemoved);
$(g).removeData();
test.isFalse(h.isRemoved);
test.isFalse(k.isRemoved);
$(g).removeData();
test.isFalse(h.isRemoved);
test.isFalse(k.isRemoved);
$(g).remove();
test.isTrue(h.isRemoved);
test.isTrue(k.isRemoved);
if (scenario === 0)
$(g).remove();
else if (scenario === 1)
$(f).empty();
else if (scenario === 2)
$(f).html("<br>");
else if (scenario === 3)
$(g).detach();
if (scenario !== 3) {
test.isTrue(h.isRemoved);
test.isTrue(k.isRemoved);
} else {
// `detach` doesn't remove
test.isFalse(h.isRemoved);
test.isFalse(k.isRemoved);
}
r.removeAll();
}
});
});