Bug 16744
Summary: | Acid3 expects different exception handling in NodeIterator | ||
---|---|---|---|
Product: | WebKit | Reporter: | Eric Seidel (no email) <eric> |
Component: | New Bugs | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | Normal | ||
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | Mac | ||
OS: | OS X 10.4 | ||
Bug Depends on: | 16743 | ||
Bug Blocks: |
Eric Seidel (no email)
This might be a dup of bug 16743.
We fail Acid3 test 6:
function () {
// test 6: Removing nodes during iteration
var count = 0;
var expect = function(n, node1, node2) {
count += 1;
assert(n == count, "reached expectation " + n + " when expecting expectation " + count);
assert(node1 == node2, "expectation " + count + " failed");
};
var doc = getTestDocument();
var t1 = doc.body.appendChild(doc.createElement('t1'));
var t2 = doc.body.appendChild(doc.createElement('t2'));
var t3 = doc.body.appendChild(doc.createElement('t3'));
var t4 = doc.body.appendChild(doc.createElement('t4'));
var callCount = 0;
var filterFunctions = [
function (node) { expect(1, node, doc.body); return true; }, // filter 0
function (node) { expect(3, node, t1); return true; }, // filter 1
function (node) { expect(5, node, t2); return true; }, // filter 2
function (node) { expect(7, node, t3); doc.body.removeChild(t4); return true; }, // filter 3
function (node) { expect(9, node, t3); doc.body.appendChild(t4); return true; }, // filter 4
function (node) { expect(11, node, t4); return true; }, // filter 5
function (node) { expect(13, node, t4); doc.body.removeChild(t4); return false; }, // filter 6
function (node) { expect(14, node, t3); return true; }, // filter 7
function (node) { expect(16, node, t2); doc.body.removeChild(t2); return true; }, // filter 8
function (node) { expect(18, node, t1); return true; }, // filter 9
];
var i = doc.createNodeIterator(doc.documentElement.lastChild, 0xFFFFFFFF, function (node) { return filterFunctions[callCount++](node); }, true);
// * B 1 2 3 4
expect(2, i.nextNode(), doc.body); // filter 0
// [B] * 1 2 3 4
expect(4, i.nextNode(), t1); // filter 1
// B [1] * 2 3 4
expect(6, i.nextNode(), t2); // filter 2
// B 1 [2] * 3 4
expect(8, i.nextNode(), t3); // filter 3
// B 1 2 [3] *
expect(10, i.nextNode(), t3); // filter 4
// B 1 2 [3] * 4
expect(12, i.nextNode(), t4); // filter 5
// B 1 2 3 [4] *
expect(15, i.previousNode(), t4); // filters 6, 7
// B 1 2 3 * (4) // filter 6
// B 1 2 [3] * // between 6 and 7
// B 1 2 * (3) // filter 7
// B 1 2 * [3]
expect(17, i.previousNode(), t2); // filter 8
// B 1 * (2) 3
// B * [1] 3
expect(19, i.previousNode(), t1); // filter 9
return 1;
},
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Eric Seidel (no email)
The printed failure:
Test 6: FAIL (reached expectation 10 when expecting expectation 9)
Darin Adler
*** This bug has been marked as a duplicate of 4714 ***