Bug 16744 - Acid3 expects different exception handling in NodeIterator
Summary: Acid3 expects different exception handling in NodeIterator
Status: RESOLVED DUPLICATE of bug 4714
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.4
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on: 16743
Blocks:
  Show dependency treegraph
 
Reported: 2008-01-05 14:01 PST by Eric Seidel (no email)
Modified: 2008-01-08 13:02 PST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Eric Seidel (no email) 2008-01-05 14:01:13 PST
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;
    },
Comment 1 Eric Seidel (no email) 2008-01-05 20:04:23 PST
The printed failure:
Test 6: FAIL (reached expectation 10 when expecting expectation 9)

Comment 2 Darin Adler 2008-01-08 13:02:43 PST

*** This bug has been marked as a duplicate of 4714 ***