317 lines
7.1 KiB
JavaScript
317 lines
7.1 KiB
JavaScript
|
(function() {
|
||
|
|
||
|
var paper,
|
||
|
url = 'http://raphaeljs.com';
|
||
|
|
||
|
module('DOM', {
|
||
|
setup: function() {
|
||
|
paper = new Raphael(document.getElementById('qunit-fixture'), 1000, 1000);
|
||
|
},
|
||
|
teardown: function() {
|
||
|
paper.remove();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var equalNodePosition = function(node, expectedParent, expectedPreviousSibling, expectedNextSibling) {
|
||
|
equal(node.parentNode, expectedParent);
|
||
|
equal(node.previousSibling, expectedPreviousSibling);
|
||
|
equal(node.nextSibling, expectedNextSibling);
|
||
|
};
|
||
|
|
||
|
var equalNodePositionWrapped = function(node, anchor, expectedParent, expectedPreviousSibling, expectedNextSibling) {
|
||
|
equal(node.parentNode, anchor);
|
||
|
equalNodePosition(anchor, expectedParent, expectedPreviousSibling, expectedNextSibling);
|
||
|
};
|
||
|
|
||
|
// Element#insertBefore
|
||
|
// --------------------
|
||
|
|
||
|
test('insertBefore: no element', function() {
|
||
|
var el = paper.rect();
|
||
|
|
||
|
el.insertBefore(null);
|
||
|
|
||
|
equalNodePosition(el.node, paper.canvas, paper.defs, null);
|
||
|
});
|
||
|
|
||
|
test('insertBefore: first element', function() {
|
||
|
var x = paper.rect();
|
||
|
var el = paper.rect();
|
||
|
|
||
|
el.insertBefore(x);
|
||
|
|
||
|
equalNodePosition(el.node, paper.canvas, paper.defs, x.node);
|
||
|
});
|
||
|
|
||
|
test('insertBefore: middle element', function() {
|
||
|
var x = paper.rect();
|
||
|
var y = paper.rect();
|
||
|
var el = paper.rect();
|
||
|
|
||
|
el.insertBefore(y);
|
||
|
|
||
|
equalNodePosition(el.node, paper.canvas, x.node, y.node);
|
||
|
});
|
||
|
|
||
|
test('insertBefore: no element when wrapped in <a>', function() {
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertBefore(null);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, paper.defs, null);
|
||
|
});
|
||
|
|
||
|
test('insertBefore: first element when wrapped in <a>', function() {
|
||
|
var x = paper.rect();
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertBefore(x);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, paper.defs, x.node);
|
||
|
});
|
||
|
|
||
|
test('insertBefore: first element wrapped in <a> and wrapped in <a>', function() {
|
||
|
var x = paper.rect().attr('href', url),
|
||
|
xAnchor = x.node.parentNode;
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertBefore(x);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, paper.defs, xAnchor);
|
||
|
});
|
||
|
|
||
|
test('insertBefore: middle element when wrapped in <a>', function() {
|
||
|
var x = paper.rect();
|
||
|
var y = paper.rect();
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertBefore(y);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, x.node, y.node);
|
||
|
});
|
||
|
|
||
|
test('insertBefore: middle element wrapped in <a> and wrapped in <a>', function() {
|
||
|
var x = paper.rect().attr('href', url),
|
||
|
xAnchor = x.node.parentNode;
|
||
|
var y = paper.rect().attr('href', url),
|
||
|
yAnchor = y.node.parentNode;
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertBefore(y);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, xAnchor, yAnchor);
|
||
|
});
|
||
|
|
||
|
// TODO...
|
||
|
// insertBefore: with set
|
||
|
// insertBefore: with nested set.
|
||
|
|
||
|
// Element#insertAfter
|
||
|
// -------------------
|
||
|
|
||
|
test('insertAfter: no element', function() {
|
||
|
var el = paper.rect();
|
||
|
|
||
|
el.insertAfter(null);
|
||
|
|
||
|
equalNodePosition(el.node, paper.canvas, paper.defs, null);
|
||
|
});
|
||
|
|
||
|
test('insertAfter: last element', function() {
|
||
|
var x = paper.rect();
|
||
|
var el = paper.rect();
|
||
|
|
||
|
el.insertAfter(x);
|
||
|
|
||
|
equalNodePosition(el.node, paper.canvas, x.node, null);
|
||
|
});
|
||
|
|
||
|
test('insertAfter: middle element', function() {
|
||
|
var x = paper.rect();
|
||
|
var y = paper.rect();
|
||
|
var el = paper.rect();
|
||
|
|
||
|
el.insertAfter(x);
|
||
|
|
||
|
equalNodePosition(el.node, paper.canvas, x.node, y.node);
|
||
|
});
|
||
|
|
||
|
test('insertAfter: no element when wrapped in <a>', function() {
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertAfter(null);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, paper.defs, null);
|
||
|
});
|
||
|
|
||
|
test('insertAfter: last element when wrapped in <a>', function() {
|
||
|
var x = paper.rect();
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertAfter(x);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, x.node, null);
|
||
|
});
|
||
|
|
||
|
test('insertAfter: last element wrapped in <a> and wrapped in <a>', function() {
|
||
|
var x = paper.rect().attr('href', url),
|
||
|
xAnchor = x.node.parentNode;
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertAfter(x);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, xAnchor, null);
|
||
|
});
|
||
|
|
||
|
test('insertAfter: middle element when wrapped in <a>', function() {
|
||
|
var x = paper.rect();
|
||
|
var y = paper.rect();
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertAfter(x);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, x.node, y.node);
|
||
|
});
|
||
|
|
||
|
test('insertAfter: middle element wrapped in <a> and wrapped in <a>', function() {
|
||
|
var x = paper.rect().attr('href', url),
|
||
|
xAnchor = x.node.parentNode;
|
||
|
var y = paper.rect().attr('href', url),
|
||
|
yAnchor = y.node.parentNode;
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.insertAfter(x);
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, xAnchor, yAnchor);
|
||
|
});
|
||
|
|
||
|
// TODO...
|
||
|
// insertAfter: with set
|
||
|
// insertAfter: with nested set.
|
||
|
|
||
|
// Element#remove
|
||
|
// --------------
|
||
|
|
||
|
test('remove: after added', function() {
|
||
|
var el = paper.rect(),
|
||
|
node = el.node;
|
||
|
|
||
|
el.remove();
|
||
|
|
||
|
equal(el.node, null);
|
||
|
equal(node.parentNode, null);
|
||
|
});
|
||
|
|
||
|
test('remove: when wrapped in <a>', function() {
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
node = el.node,
|
||
|
anchor = node.parentNode;
|
||
|
|
||
|
el.remove();
|
||
|
|
||
|
equal(el.node, null);
|
||
|
equal(node.parentNode, anchor);
|
||
|
equal(anchor.parentNode, null);
|
||
|
});
|
||
|
|
||
|
test('remove: when already removed', function() {
|
||
|
var el = paper.rect(),
|
||
|
node = el.node;
|
||
|
|
||
|
el.remove();
|
||
|
el.remove();
|
||
|
|
||
|
equal(el.node, null);
|
||
|
equal(node.parentNode, null);
|
||
|
});
|
||
|
|
||
|
test('remove: when the canvas is removed', function() {
|
||
|
var el = paper.rect(),
|
||
|
node = el.node;
|
||
|
|
||
|
paper.remove();
|
||
|
el.remove();
|
||
|
|
||
|
equal(el.node, null);
|
||
|
equal(node.parentNode, null);
|
||
|
});
|
||
|
|
||
|
// Element#toFront
|
||
|
// --------------
|
||
|
|
||
|
test('toFront: normal', function() {
|
||
|
var el = paper.rect();
|
||
|
var x = paper.rect();
|
||
|
|
||
|
el.toFront();
|
||
|
|
||
|
equalNodePosition(el.node, paper.canvas, x.node, null);
|
||
|
});
|
||
|
|
||
|
test('toFront: when wrapped in <a>', function() {
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
var x = paper.rect();
|
||
|
|
||
|
el.toFront();
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, x.node, null);
|
||
|
});
|
||
|
|
||
|
// Element#toBack
|
||
|
// --------------
|
||
|
|
||
|
test('toBack: normal', function() {
|
||
|
var x = paper.rect();
|
||
|
var el = paper.rect();
|
||
|
|
||
|
el.toBack();
|
||
|
|
||
|
equalNodePosition(el.node, paper.canvas, null, paper.desc);
|
||
|
equalNodePosition(x.node, paper.canvas, paper.defs, null);
|
||
|
});
|
||
|
|
||
|
test('toBack: when wrapped in <a>', function() {
|
||
|
var x = paper.rect();
|
||
|
var el = paper.rect().attr('href', url),
|
||
|
anchor = el.node.parentNode;
|
||
|
|
||
|
el.toBack();
|
||
|
|
||
|
equalNodePositionWrapped(el.node, anchor, paper.canvas, null, paper.desc);
|
||
|
equalNodePosition(x.node, paper.canvas, paper.defs, null);
|
||
|
});
|
||
|
|
||
|
|
||
|
// Element#attrs
|
||
|
// -------------
|
||
|
|
||
|
// #x
|
||
|
|
||
|
// #y
|
||
|
|
||
|
// #rx
|
||
|
|
||
|
// #ry
|
||
|
|
||
|
// #transform
|
||
|
|
||
|
// #title
|
||
|
|
||
|
// #href
|
||
|
|
||
|
//keep adding and testing!
|
||
|
|
||
|
|
||
|
|
||
|
})();
|