110 lines
2.2 KiB
JavaScript
110 lines
2.2 KiB
JavaScript
|
ModuleLoader.require([
|
||
|
"tinymce/dom/TreeWalker"
|
||
|
], function(TreeWalker) {
|
||
|
var viewElm, nodes;
|
||
|
|
||
|
module("tinymce.dom.TreeWalker", {
|
||
|
setupModule: function() {
|
||
|
function setupHtml(html) {
|
||
|
var viewElm;
|
||
|
|
||
|
viewElm = document.getElementById('view');
|
||
|
viewElm.innerHTML = html;
|
||
|
|
||
|
return viewElm;
|
||
|
}
|
||
|
|
||
|
function all(node) {
|
||
|
var list = [node];
|
||
|
|
||
|
if (node.hasChildNodes()) {
|
||
|
for (var i = 0; i < node.childNodes.length; i++) {
|
||
|
list = list.concat(all(node.childNodes[i]));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
viewElm = setupHtml(
|
||
|
'1' +
|
||
|
'<ul>' +
|
||
|
'<li>' +
|
||
|
'2' +
|
||
|
'<ul>' +
|
||
|
'<li>3</li>' +
|
||
|
'<li>4</li>' +
|
||
|
'</ul>' +
|
||
|
'</li>' +
|
||
|
'<li>' +
|
||
|
'5' +
|
||
|
'<ul>' +
|
||
|
'<li>6</li>' +
|
||
|
'<li>7</li>' +
|
||
|
'</ul>' +
|
||
|
'</li>' +
|
||
|
'</ul>' +
|
||
|
'8'
|
||
|
);
|
||
|
|
||
|
nodes = all(viewElm).slice(1);
|
||
|
},
|
||
|
|
||
|
teardownModule: function() {
|
||
|
viewElm = nodes = null;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
function compareNodeLists(expectedNodes, actutalNodes) {
|
||
|
if (expectedNodes.length !== actutalNodes.length) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
for (var i = 0; i < expectedNodes.length; i++) {
|
||
|
if (expectedNodes[i] !== actutalNodes[i]) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
test('next', function() {
|
||
|
var walker = new TreeWalker(nodes[0], viewElm);
|
||
|
var actualNodes;
|
||
|
|
||
|
actualNodes = [walker.current()];
|
||
|
while ((walker.next())) {
|
||
|
actualNodes.push(walker.current());
|
||
|
}
|
||
|
|
||
|
ok(compareNodeLists(nodes, actualNodes), 'Should be the same');
|
||
|
});
|
||
|
|
||
|
test('prev2', function() {
|
||
|
var walker = new TreeWalker(nodes[nodes.length - 1], viewElm);
|
||
|
var actualNodes;
|
||
|
|
||
|
actualNodes = [walker.current()];
|
||
|
while ((walker.prev2())) {
|
||
|
actualNodes.push(walker.current());
|
||
|
}
|
||
|
|
||
|
actualNodes = actualNodes.reverse();
|
||
|
ok(compareNodeLists(nodes, actualNodes), 'Should be the same');
|
||
|
});
|
||
|
|
||
|
test('prev2(shallow:true)', function() {
|
||
|
var walker = new TreeWalker(nodes[nodes.length - 1], viewElm);
|
||
|
var actualNodes;
|
||
|
|
||
|
actualNodes = [walker.current()];
|
||
|
while ((walker.prev2(true))) {
|
||
|
actualNodes.push(walker.current());
|
||
|
}
|
||
|
|
||
|
actualNodes = actualNodes.reverse();
|
||
|
ok(compareNodeLists(viewElm.childNodes, actualNodes), 'Should be the same');
|
||
|
});
|
||
|
});
|