Index: samples/third_party/dromaeo/tests/dom-traverse-htmlfast.dart |
diff --git a/samples/third_party/dromaeo/tests/dom-traverse-htmlfast.dart b/samples/third_party/dromaeo/tests/dom-traverse-htmlfast.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c72e9d574da463b9c1e4a5af041a33c7d9dd792f |
--- /dev/null |
+++ b/samples/third_party/dromaeo/tests/dom-traverse-htmlfast.dart |
@@ -0,0 +1,87 @@ |
+#library("dom_traverse"); |
+#import("dart:html"); |
+#import('../common/common.dart'); |
+#import('runner.dart'); |
+ |
+ |
+void main() { |
+ final int num = 40; |
+ |
+ // Try to force real results. |
+ var ret; |
+ |
+ String html = document.body.innerHTML; |
+ |
+ new Suite(window, 'dom-traverse') |
+ .prep(() { |
+ html = BenchUtil.replaceAll(html, 'id="test(\\w).*?"', (Match match) { |
+ final group = match.group(1); |
+ return 'id="test${group}${num}"'; |
+ }); |
+ html = BenchUtil.replaceAll(html, 'name="test.*?"', (Match match) { |
+ return 'name="test${num}"'; |
+ }); |
+ html = BenchUtil.replaceAll(html, 'class="foo.*?"', (Match match) { |
+ return 'class="foo test${num} bar"'; |
+ }); |
+ |
+ final div = new Element.tag('div'); |
+ div.innerHTML = html; |
+ document.body.appendChild(div); |
+ }) |
+ .test('firstChild', () { |
+ final nodes = document.body.nodes; |
+ final nl = nodes.length; |
+ |
+ for (int i = 0; i < num; i++) { |
+ for (int j = 0; j < nl; j++) { |
+ Node cur = nodes[j]; |
+ while (cur !== null) { |
+ cur = cur.$dom_firstChild; |
+ } |
+ ret = cur; |
+ } |
+ } |
+ }) |
+ .test('lastChild', () { |
+ final nodes = document.body.nodes; |
+ final nl = nodes.length; |
+ |
+ for (int i = 0; i < num; i++) { |
+ for (int j = 0; j < nl; j++) { |
+ Node cur = nodes[j]; |
+ while (cur !== null) { |
+ cur = cur.$dom_lastChild; |
+ } |
+ ret = cur; |
+ } |
+ } |
+ }) |
+ .test('nextSibling', () { |
+ for (int i = 0; i < num * 2; i++) { |
+ Node cur = document.body.$dom_firstChild; |
+ while (cur !== null) { |
+ cur = cur.nextNode; |
+ } |
+ ret = cur; |
+ } |
+ }) |
+ .test('previousSibling', () { |
+ for (int i = 0; i < num * 2; i++) { |
+ Node cur = document.body.$dom_lastChild; |
+ while (cur !== null) { |
+ cur = cur.previousNode; |
+ } |
+ ret = cur; |
+ } |
+ }) |
+ .test('childNodes', () { |
+ for (int i = 0; i < num; i++) { |
+ final nodes = document.body.nodes; |
+ for (int j = 0; j < nodes.length; j++) { |
+ ret = nodes[j]; |
+ } |
+ } |
+ }) |
+ .end(); |
+} |