Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / dom / svg / level3 / xpath / Text_Nodes.js
blobbc327bdc7bf1355e294bf3a32aeb4b60844d7596
1 /*
2 Copyright Â© 2001-2004 World Wide Web Consortium,
3 (Massachusetts Institute of Technology, European Research Consortium
4 for Informatics and Mathematics, Keio University). All
5 Rights Reserved. This work is distributed under the W3C® Software License [1] in the
6 hope that it will be useful, but WITHOUT ANY WARRANTY; without even
7 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9 [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
12 // expose test function names
13 function exposeTestFunctionNames()
15 return ['Text_Nodes'];
18 var docsLoaded = -1000000;
19 var builder = null;
22 //   This function is called by the testing framework before
23 //      running the test suite.
25 //   If there are no configuration exceptions, asynchronous
26 //        document loading is started.  Otherwise, the status
27 //        is set to complete and the exception is immediately
28 //        raised when entering the body of the test.
30 function setUpPage() {
31    setUpPageStatus = 'running';
32    try {
33      //
34      //   creates test document builder, may throw exception
35      //
36      builder = createConfiguredBuilder();
38       docsLoaded = 0;
40       var docRef = null;
41       if (typeof(this.doc) != 'undefined') {
42         docRef = this.doc;
43       }
44       docsLoaded += preload(docRef, "doc", "staff");
46        if (docsLoaded == 1) {
47           setUpPageStatus = 'complete';
48        }
49     } catch(ex) {
50         catchInitializationError(builder, ex);
51         setUpPageStatus = 'complete';
52     }
56 //   This method is called on the completion of
57 //      each asychronous load started in setUpTests.
59 //   When every synchronous loaded document has completed,
60 //      the page status is changed which allows the
61 //      body of the test to be executed.
62 function loadComplete() {
63     if (++docsLoaded == 1) {
64         setUpPageStatus = 'complete';
65     }
68 /**
70       1.2.4 Text Nodes -
71       Create ANY_TYPE XPathResult matching //text(),
72       check that each matching Node is a Text Node, and
73       that no pair of nodes in the result are siblings.
75 * @author Bob Clary
76 * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/xpath#Mapping
77 * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/xpath#XPathEvaluator
78 * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/xpath#XPathEvaluator-createNSResolver
79 * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/xpath#XPathEvaluator-evaluate
80 * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/xpath#XPathNSResolver
81 * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/xpath#XPathResult
82 * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/xpath#XPathResult-iterateNext
84 function Text_Nodes() {
85    var success;
86     if(checkInitialization(builder, "Text_Nodes") != null) return;
87     var ANY_TYPE = 0;
88       var NUMBER_TYPE = 1;
89       var STRING_TYPE = 2;
90       var BOOLEAN_TYPE = 3;
91       var UNORDERED_NODE_ITERATOR_TYPE = 4;
92       var ORDERED_NODE_ITERATOR_TYPE = 5;
93       var UNORDERED_NODE_SNAPSHOT_TYPE = 6;
94       var ORDERED_NODE_SNAPSHOT_TYPE = 7;
95       var ANY_UNORDERED_NODE_TYPE = 8;
96       var FIRST_ORDERED_NODE_TYPE = 9;
97       var doc;
98       var resolver;
99       var evaluator;
100       var contextNode;
101       var inresult = null;
103       var outresult = null;
105       var expression = "//text()";
106       var xpathType = ANY_TYPE;
107       var currNode;
108       var nextNode;
109       var currNodeNextSibling;
110       var nextNodePrevSibling;
111       var nodeType;
112       var isTextNode;
114       var docRef = null;
115       if (typeof(this.doc) != 'undefined') {
116         docRef = this.doc;
117       }
118       doc = load(docRef, "doc", "staff");
119       evaluator = createXPathEvaluator(doc);
120 resolver = evaluator.createNSResolver(doc);
121       contextNode =  doc;
122 outresult = evaluator.evaluate(expression,contextNode,resolver,xpathType,inresult);
123       currNode = outresult.iterateNext();
125     while(
127     (currNode != null)
129     ) {
130     nodeType = currNode.nodeType;
132       isTextNode = "true";
134     if(
136     (!(3 == nodeType) && !(4 == nodeType))
138     ) {
139     isTextNode = "false";
141     }
142     assertEquals("S1.2.4-Text-Nodes-nodeType","true".toLowerCase(),isTextNode.toLowerCase());
143        nextNode = outresult.iterateNext();
145     if(
147     (nextNode != null)
149     ) {
150     currNodeNextSibling = currNode.nextSibling;
152     // WebKit fix: inverted the condition: <http://bugs.webkit.org/show_bug.cgi?id=12560>.
153     if(
155     same(nextNode,currNodeNextSibling)
157     ) {
158             assertTrue("S1.2.4-Text-Nodes-Adjacent-Next",false);
160         }
161     nextNodePrevSibling = nextNode.previousSibling;
163     // WebKit fix: inverted the condition: <http://bugs.webkit.org/show_bug.cgi?id=12560>.
164     if(
166     same(nextNodePrevSibling,currNode)
168     ) {
169             assertTrue("S1.2.4-Text-Nodes-Adjacent-Prev",false);
171         }
173     }
174     currNode =  nextNode;
176     }
180 function runTest() {
181    Text_Nodes();