Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/base/test/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 7 kB image not shown  

Quelle  test_bug498240.html   Sprache: HTML

 
 products/Sources/formale Sprachen/C/Firefox/dom/base/test/test_bug498240.html


<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=498240
-->

<head>
  <title>Test for Bug 498240</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<style>
 .container { border: 1px solid blue; display:block; }
 b { color:blue; }
 i { color:magenta; }
</style>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=498240">Mozilla Bug 498240</a>
<p id="display"></p>
<div id="content" style="display: none">
  
</div>
<pre id="test">
<script type="application/javascript">

/** Test for Bug 498240 **/


function create(s) {
  var p = document.createElement('span');
  p.innerHTML = s;
  p.setAttribute("class","container");
  document.body.appendChild(p);
  return p;
}
function select(start, startOffset, end, endOffset) {
  var sel = getSelection();
  sel.removeAllRanges();
  var range = document.createRange();
  range.setStart(start, startOffset);
  range.setEnd(end, endOffset);
  sel.addRange(range);
}

function insertClone(node) {
  var sel = getSelection();
  var range = sel.getRangeAt(0);
  range.insertNode(node.cloneNode(true));
}
function insertCloneAtEnd(node) {
  var sel = getSelection();
  var range = sel.getRangeAt(0);
  range.endContainer.insertBefore(node.cloneNode(true),range.endContainer.childNodes[range.endOffset]);
}

function check(start, startOffset, end, endOffset, s) {
  var sel = getSelection();
  var range = sel.getRangeAt(0);
  is(range.startContainer, start, "wrong start node for range: '"+range.toString()+"'");
  is(range.startOffset, startOffset, "wrong start offset for range: '"+range.toString()+"'");
  is(range.endContainer, end, "wrong end node for range: '"+range.toString()+"'");
  is(range.endOffset, endOffset, "wrong end offset for range: '"+range.toString()+"'");
}

function testInsertNode(node) {
  var p;

  p = create('abc');
  select(p.childNodes[0],0,p.childNodes[1],0);
  insertClone(node);
  check(p.childNodes[0],0,p.childNodes[3],0);

  p = create('def');
  select(p.childNodes[0],0,p.childNodes[1],1);
  insertClone(node);
  check(p.childNodes[0],0,p.childNodes[3],1);

  p = create('gh');
  select(p.childNodes[0],0,p.childNodes[0],0);
  insertClone(node);
  check(p.childNodes[0],0,p,2);

  p = create('ij');
  select(p.childNodes[0],1,p.childNodes[0],1);
  insertClone(node);
  check(p.childNodes[0],1,p,2);

  p = create('kl');
  select(p.childNodes[0],0,p.childNodes[1].childNodes[0],0);
  insertClone(node);
  check(p.childNodes[0],0,p.childNodes[3].childNodes[0],0);

  p = create('mno');
  select(p.childNodes[0],1,p.childNodes[1].childNodes[0],0);
  insertClone(node);
  check(p.childNodes[0],1,p.childNodes[3].childNodes[0],0);

  p = create('pqr');
  select(p.childNodes[0],1,p.childNodes[1].childNodes[0],1);
  insertClone(node);
  check(p.childNodes[0],1,p.childNodes[3].childNodes[0],1);

  p = create('stu');
  select(p.childNodes[0],1,p.childNodes[1],0);
  insertClone(node);
  check(p.childNodes[0],1,p.childNodes[3],0);

  p = create('ABC');
  select(p.childNodes[0],0,p.childNodes[1],0);
  insertClone(node);
  check(p.childNodes[0],0,p.childNodes[1],0);

  p = create('DEF');
  select(p.childNodes[0],1,p.childNodes[1],1);
  insertClone(node);
  check(p.childNodes[0],1,p.childNodes[1],1);

  p = create('GH');
  select(p.childNodes[0],0,p.childNodes[1],0);
  insertClone(node);
  check(p.childNodes[0],0,p.childNodes[1],0);

  p = create('IJ');
  select(p,0,p.childNodes[1],0);
  insertClone(node);
  check(p,0,p.childNodes[2],0);

  p = create('KL');
  select(p,0,p,2);
  insertClone(node);
  check(p,0,p,3);

  p = create('MN');
  select(p,1,p,2);
  insertClone(node);
  check(p,1,p,3);

  p = create('OP');
  select(p,1,p,1);
  insertClone(node);
  check(p,1,p,2);

  p = create('QR');
  select(p,2,p,2);
  insertClone(node);
  check(p,2,p,3);

  p = create('ST');
  select(p,1,p,1);
  insertCloneAtEnd(node);
  check(p,1,p,1);

  p = create('UV');
  select(p,2,p,2);
  insertCloneAtEnd(node);
  check(p,2,p,2);

  p = create('XY');
  select(p,0,p,1);
  insertCloneAtEnd(node);
  check(p,0,p,1);

  p = create('XY');
  select(p,0,p.childNodes[1],1);
  insertCloneAtEnd(node);
  check(p,0,p.childNodes[1],1);

  p = create('Z');
  select(p,0,p.childNodes[1],0);
  insertCloneAtEnd(node);
  check(p,0,p.childNodes[1],0);

  p = create('ZAZBZC');
  select(p,0,p.childNodes[1],1);
  insertCloneAtEnd(node);
  check(p,0,p.childNodes[1],1);
}
function testInvalidNodeType(node) {
  try { 
    testInsertNode(node); 
    ok(false,"Expected an InvalidNodeTypeError"); 
  } catch(e) {
    is(e.name, "InvalidNodeTypeError""Wrong exception, expected InvalidNodeTypeError");
    ok(e instanceof DOMException, "Wrong type of exception: " + e);
    is(e.code, DOMException.INVALID_NODE_TYPE_ERR, "Wrong exception code, expected INVALID_NODE_TYPE_ERR");
  }
}

function runTest() {
  testInsertNode(document.createTextNode('123'));

  var i = document.createElement('SPAN')
  i.innerHTML='456'
  testInsertNode(i);

  i = document.createDocumentFragment();
  i.appendChild(document.createTextNode('789'));
  testInsertNode(i);

  /// DOM2 Traversal and Range Specification 2.13 "insertNode":
  ///   RangeException INVALID_NODE_TYPE_ERR: Raised if newNode is an Attr, Entity, Notation, or Document node.
  // BUG: testInvalidNodeType(document.createAttribute('a'));
  todo(false, "Test insertion of Entity node into range");
  // TODO: testInvalidNodeType(document.createEntity());
  todo(false, "Test insertion of Notation node into range");
  // TODO: testInvalidNodeType(document.createNotation());
  // BUG: testInvalidNodeType(document.implementation.createDocument('http://www.w3.org/1999/xhtml''html', null));

  // Intentionally fails because of bug 418755.
  todo(false, "test that Range::insertNode() throws WrongDocumentError when it should");
  i = document.implementation.createDocument('http://www.w3.org/1999/xhtml''html', null).createElement('html');
  try { 
    testInsertNode(i);
    todo(false,"Expected a WrongDocumentError"); 
  } catch(e) {
    is(e.name, "WrongDocumentError""Wrong exception, expected WrongDocumentError");
    ok(e instanceof DOMException, "Wrong type of exception: " + e);
    is(e.code, DOMException.WRONG_DOCUMENT_ERR, "Wrong exception code, expected WRONG_DOCUMENT_ERR");
  }

  // Inserting an ancestor of the start container should throw HierarchyRequestError
  todo(false, "test that Range::insertNode() throws HierarchyRequestError when it should");
  var p = create('IJK');
  select(p.childNodes[0],0,p.childNodes[0],1);
  var sel = getSelection();
  var range = sel.getRangeAt(0);
  try { 
    range.insertNode(p);
    ok(false,"Expected a HierarchyRequestError"); 
  } catch(e) {
    is(e.name, "HierarchyRequestError""Wrong exception, expected HierarchyRequestError");
    ok(e instanceof DOMException, "Wrong type of exception: " + e);
    is(e.code, DOMException.HIERARCHY_REQUEST_ERR, "Wrong exception code, expected HIERARCHY_REQUEST_ERR");
  }

  // TODO: we should also have a test for:
  /// "HierarchyRequestError: Raised if the container of the start of the Range is of a type
  ///   that does not allow children of the type of newNode"

  todo(false, "InvalidStateError test goes here...");

  var sel = getSelection();
  sel.removeAllRanges();

  SimpleTest.finish();
}

SimpleTest.waitForExplicitFinish();
addLoadEvent(runTest);


</script>
</pre>
</body>
</html>

Messung V0.5
C=100 H=100 G=100

¤ Dauer der Verarbeitung: 0.23 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.