Browse Source

Normalized the Dromaeo DOM microtests.

John Resig 16 years ago
parent
commit
4b6572aa9b
4 changed files with 71 additions and 31 deletions
  1. 2 2
      tests/dom-attr.html
  2. 17 4
      tests/dom-modify.html
  3. 34 15
      tests/dom-query.html
  4. 18 10
      tests/dom-traverse.html

+ 2 - 2
tests/dom-attr.html

@@ -11,7 +11,7 @@ var ret, tmp;
 var elem = document.getElementById("test1");
 var elem = document.getElementById("test1");
 var a = document.getElementsByTagName("a")[0];
 var a = document.getElementsByTagName("a")[0];
 
 
-for ( var num = 1280; num <= 10240; num *= 2 ) (function(num){
+for ( var num = 2560; num <= 20480; num *= 2 ) (function(num){
 	
 	
 	test( "getAttribute", num, function(){
 	test( "getAttribute", num, function(){
 		for ( var i = 0; i < num; i++ )
 		for ( var i = 0; i < num; i++ )
@@ -19,7 +19,7 @@ for ( var num = 1280; num <= 10240; num *= 2 ) (function(num){
 	});
 	});
 
 
 	test( "element.property", num, function(){
 	test( "element.property", num, function(){
-		for ( var i = 0; i < num; i++ )
+		for ( var i = 0; i < num * 2; i++ )
 			ret = elem.id;
 			ret = elem.id;
 	});
 	});
 
 

+ 17 - 4
tests/dom-modify.html

@@ -18,13 +18,23 @@ for ( var i = 0; i < 1024; i++ )
 for ( var num = 100; num <= 800; num *= 2 ) (function(num){
 for ( var num = 100; num <= 800; num *= 2 ) (function(num){
 
 
 	test( "createElement", num, function(){
 	test( "createElement", num, function(){
-		for ( var i = 0; i < num; i++ )
+		for ( var i = 0; i < num; i++ ) {
 			ret = document.createElement("div");
 			ret = document.createElement("div");
+			ret = document.createElement("span");
+			ret = document.createElement("table");
+			ret = document.createElement("tr");
+			ret = document.createElement("select");
+		}
 	});
 	});
 
 
 	test( "createTextNode", num, function(){
 	test( "createTextNode", num, function(){
-		for ( var i = 0; i < num; i++ )
+		for ( var i = 0; i < num; i++ ) {
 			ret = document.createTextNode(str);
 			ret = document.createTextNode(str);
+			ret = document.createTextNode(str + "2");
+			ret = document.createTextNode(str + "3");
+			ret = document.createTextNode(str + "4");
+			ret = document.createTextNode(str + "5");
+		}
 	});
 	});
 
 
 	/* Need a better way to test this
 	/* Need a better way to test this
@@ -46,8 +56,11 @@ for ( var num = 100; num <= 800; num *= 2 ) (function(num){
 	});
 	});
 	
 	
 	test( "cloneNode", num, function(){
 	test( "cloneNode", num, function(){
-		for ( var i = 0; i < elems.length; i++ )
-			elems[i] = elems[i].cloneNode(true);
+		for ( var i = 0; i < elems.length; i++ ) {
+			ret = elems[i].cloneNode();
+			ret = elems[i].cloneNode(true);
+			ret = elems[i].cloneNode(true);
+		}
 	});
 	});
 
 
 	test( "appendChild", num, function(){
 	test( "appendChild", num, function(){

+ 34 - 15
tests/dom-query.html

@@ -13,7 +13,7 @@ var html = document.body.innerHTML;
 for ( var num = 10; num <= 80; num *= 2 ) (function(num){
 for ( var num = 10; num <= 80; num *= 2 ) (function(num){
 
 
 	prep(function(){
 	prep(function(){
-		html = html.replace(/id="test.*?"/g, 'id="test' + num + '"');
+		html = html.replace(/id="test(\w).*?"/g, 'id="test$1' + num + '"');
 		html = html.replace(/name="test.*?"/g, 'name="test' + num + '"');
 		html = html.replace(/name="test.*?"/g, 'name="test' + num + '"');
 		html = html.replace(/class="foo.*?"/g, 'class="foo test' + num + ' bar"');
 		html = html.replace(/class="foo.*?"/g, 'class="foo test' + num + ' bar"');
 		var div = document.createElement("div");
 		var div = document.createElement("div");
@@ -22,15 +22,24 @@ for ( var num = 10; num <= 80; num *= 2 ) (function(num){
 	});
 	});
 
 
 	test( "getElementById", num, function(){
 	test( "getElementById", num, function(){
-		for ( var i = 0; i < num; i++ ) {
-			var elem = document.getElementById("test" + num);
-			ret = elem.nodeType;
+		for ( var i = 0; i < num * 30; i++ ) {
+			ret = document.getElementById("testA" + num).nodeType;
+			ret = document.getElementById("testB" + num).nodeType;
+			ret = document.getElementById("testC" + num).nodeType;
+			ret = document.getElementById("testD" + num).nodeType;
+			ret = document.getElementById("testE" + num).nodeType;
+			ret = document.getElementById("testF" + num).nodeType;
 		}
 		}
 	});
 	});
 
 
 	test( "getElementById (not in document)", num, function(){
 	test( "getElementById (not in document)", num, function(){
-		for ( var i = 0; i < num; i++ ) {
-			ret = document.getElementById("test");
+		for ( var i = 0; i < num * 30; i++ ) {
+			ret = document.getElementById("testA");
+			ret = document.getElementById("testB");
+			ret = document.getElementById("testC");
+			ret = document.getElementById("testD");
+			ret = document.getElementById("testE");
+			ret = document.getElementById("testF");
 		}
 		}
 	});
 	});
 
 
@@ -70,15 +79,25 @@ for ( var num = 10; num <= 80; num *= 2 ) (function(num){
 	});
 	});
 
 
 	test( "getElementsByName", num, function(){
 	test( "getElementsByName", num, function(){
-		for ( var i = 0; i < num; i++ ) {
+		for ( var i = 0; i < num * 20; i++ ) {
+			var elems = document.getElementsByName("test" + num);
+			ret = elems[elems.length-1].nodeType;
+			var elems = document.getElementsByName("test" + num);
+			ret = elems[elems.length-1].nodeType;
+			var elems = document.getElementsByName("test" + num);
+			ret = elems[elems.length-1].nodeType;
 			var elems = document.getElementsByName("test" + num);
 			var elems = document.getElementsByName("test" + num);
 			ret = elems[elems.length-1].nodeType;
 			ret = elems[elems.length-1].nodeType;
 		}
 		}
 	});
 	});
 
 
 	test( "getElementsByName (not in document)", num, function(){
 	test( "getElementsByName (not in document)", num, function(){
-		for ( var i = 0; i < num; i++ ) {
-			ret = document.getElementsByName("test");
+		for ( var i = 0; i < num * 20; i++ ) {
+			ret = document.getElementsByName("test").length == 0;
+			ret = document.getElementsByName("test").length == 0;
+			ret = document.getElementsByName("test").length == 0;
+			ret = document.getElementsByName("test").length == 0;
+			ret = document.getElementsByName("test").length == 0;
 		}
 		}
 	});
 	});
 
 
@@ -233,7 +252,7 @@ endTest();
 
 
   <div class="subtoc">
   <div class="subtoc">
 
 
-   <h2 id="test10"><a name=contents>Table of contents</a></h2>
+   <h2 id="testF10"><a name=contents>Table of contents</a></h2>
 
 
    <ul class="toc">
    <ul class="toc">
     <li class="tocline2"><a href="#context">1. Introduction</a>
     <li class="tocline2"><a href="#context">1. Introduction</a>
@@ -324,7 +343,7 @@ endTest();
 
 
   </div>
   </div>
 
 
-  <h2><a name=context>1. Introduction</a></h2>
+  <h2 id="testA10"><a name=context>1. Introduction</a></h2>
 
 
   <h3><a name=dependencies></a>1.1. Dependencies</h3>
   <h3><a name=dependencies></a>1.1. Dependencies</h3>
 
 
@@ -379,7 +398,7 @@ endTest();
 
 
   </ul>
   </ul>
 
 
-<h2><a name=selectors></a>2. Selectors</h2>
+<h2 id="testB10"><a name=selectors></a>2. Selectors</h2>
 
 
 <p><em>This section is non-normative, as it merely summarizes the
 <p><em>This section is non-normative, as it merely summarizes the
 following sections.</em></p>
 following sections.</em></p>
@@ -693,14 +712,14 @@ representations.</p>
 prepending "matches" to the contents of each cell in the "Meaning"
 prepending "matches" to the contents of each cell in the "Meaning"
 column.</p>
 column.</p>
 
 
-<h2><a name=casesens>3. Case sensitivity</a></h2>
+<h2 id="testC10"><a name=casesens>3. Case sensitivity</a></h2>
 
 
 <p>The case sensitivity of document language element names, attribute
 <p>The case sensitivity of document language element names, attribute
 names, and attribute values in selectors depends on the document
 names, and attribute values in selectors depends on the document
 language. For example, in HTML, element names are case-insensitive,
 language. For example, in HTML, element names are case-insensitive,
 but in XML, they are case-sensitive.</p>
 but in XML, they are case-sensitive.</p>
 
 
-<h2><a name=selector-syntax>4. Selector syntax</a></h2>
+<h2 id="testD10"><a name=selector-syntax>4. Selector syntax</a></h2>
 
 
 <p>A <dfn><a name=selector>selector</a></dfn> is a chain of one
 <p>A <dfn><a name=selector>selector</a></dfn> is a chain of one
 or more <a href="#sequence">sequences of simple selectors</a>
 or more <a href="#sequence">sequences of simple selectors</a>
@@ -748,7 +767,7 @@ simple selectors.</p>
 no pseudo-element, is an <a href="#Conformance">invalid
 no pseudo-element, is an <a href="#Conformance">invalid
 selector</a>.</p>
 selector</a>.</p>
 
 
-<h2><a name=grouping>5. Groups of selectors</a></h2>
+<h2 id="testE10"><a name=grouping>5. Groups of selectors</a></h2>
 
 
 <p>When several selectors share the same declarations, they may be
 <p>When several selectors share the same declarations, they may be
 grouped into a comma-separated list. (A comma is U+002C.)</p>
 grouped into a comma-separated list. (A comma is U+002C.)</p>

+ 18 - 10
tests/dom-traverse.html

@@ -22,25 +22,33 @@ for ( var num = 10; num <= 80; num *= 2 ) (function(num){
 	});
 	});
 
 
 	test( "firstChild", num, function(){
 	test( "firstChild", num, function(){
+		var nodes = document.body.childNodes, nl = nodes.length;
+
 		for ( var i = 0; i < num; i++ ) {
 		for ( var i = 0; i < num; i++ ) {
-			var cur = document.body.firstChild;
-			while ( cur )
-				cur = cur.firstChild;
-			ret = cur;
+			for ( var j = 0; j < nl; j++ ) {
+				var cur = nodes[j];
+				while ( cur )
+					cur = cur.firstChild;
+				ret = cur;
+			}
 		}
 		}
 	});
 	});
 
 
 	test( "lastChild", num, function(){
 	test( "lastChild", num, function(){
+		var nodes = document.body.childNodes, nl = nodes.length;
+
 		for ( var i = 0; i < num; i++ ) {
 		for ( var i = 0; i < num; i++ ) {
-			var cur = document.body.lastChild;
-			while ( cur )
-				cur = cur.lastChild;
-			ret = cur;
+			for ( var j = 0; j < nl; j++ ) {
+				var cur = nodes[j];
+				while ( cur )
+					cur = cur.lastChild;
+				ret = cur;
+			}
 		}
 		}
 	});
 	});
 
 
 	test( "nextSibling", num, function(){
 	test( "nextSibling", num, function(){
-		for ( var i = 0; i < num; i++ ) {
+		for ( var i = 0; i < num * 2; i++ ) {
 			var cur = document.body.firstChild;
 			var cur = document.body.firstChild;
 			while ( cur )
 			while ( cur )
 				cur = cur.nextSibling;
 				cur = cur.nextSibling;
@@ -49,7 +57,7 @@ for ( var num = 10; num <= 80; num *= 2 ) (function(num){
 	});
 	});
 
 
 	test( "previousSibling", num, function(){
 	test( "previousSibling", num, function(){
-		for ( var i = 0; i < num; i++ ) {
+		for ( var i = 0; i < num * 2; i++ ) {
 			var cur = document.body.lastChild;
 			var cur = document.body.lastChild;
 			while ( cur )
 			while ( cur )
 				cur = cur.previousSibling;
 				cur = cur.previousSibling;