1c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 2c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block/* 3c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockCopyright © 2001-2004 World Wide Web Consortium, 4c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block(Massachusetts Institute of Technology, European Research Consortium 5c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfor Informatics and Mathematics, Keio University). All 6c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockRights Reserved. This work is distributed under the W3C® Software License [1] in the 7c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockhope that it will be useful, but WITHOUT ANY WARRANTY; without even 8c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockthe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 10c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 11c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block*/ 12c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 13c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 14c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 15c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block /** 16c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block * Gets URI that identifies the test. 17c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block * @return uri identifier of test 18c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block */ 19c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction getTargetURI() { 20c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block return "http://www.w3.org/2001/DOM-Test-Suite/level3/core/nodegetfeature08"; 21c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 22c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 23c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockvar docsLoaded = -1000000; 24c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockvar builder = null; 25c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 26c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// 27c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// This function is called by the testing framework before 28c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// running the test suite. 29c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// 30c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// If there are no configuration exceptions, asynchronous 31c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// document loading is started. Otherwise, the status 32c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// is set to complete and the exception is immediately 33c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// raised when entering the body of the test. 34c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// 35c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction setUpPage() { 36c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block setUpPageStatus = 'running'; 37c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block try { 38c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block // 39c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block // creates test document builder, may throw exception 40c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block // 41c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block builder = createConfiguredBuilder(); 42c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block checkFeature("XML", null); 43c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 44c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block docsLoaded = 0; 45c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 46c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var docRef = null; 47c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if (typeof(this.doc) != 'undefined') { 48c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block docRef = this.doc; 49c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 50c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block docsLoaded += preload(docRef, "doc", "barfoo"); 51c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 52c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if (docsLoaded == 1) { 53c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block setUpPageStatus = 'complete'; 54c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 55c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } catch(ex) { 56c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block catchInitializationError(builder, ex); 57c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block setUpPageStatus = 'complete'; 58c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 59c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block} 60c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 61c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 62c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 63c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// 64c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// This method is called on the completion of 65c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// each asychronous load started in setUpTests. 66c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// 67c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// When every synchronous loaded document has completed, 68c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// the page status is changed which allows the 69c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block// body of the test to be executed. 70c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction loadComplete() { 71c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if (++docsLoaded == 1) { 72c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block setUpPageStatus = 'complete'; 73c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 74c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block} 75c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 76c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 77c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block/** 78c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* 79c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockCheck implementation of Node.getFeature on ProcessingInstruction. 80c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 81c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @author Curt Arnold 82c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @author Neil Delima 83c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#Node3-getFeature 84c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block*/ 85c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction nodegetfeature08() { 86c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var success; 87c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if(checkInitialization(builder, "nodegetfeature08") != null) return; 88c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var doc; 89c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var node; 90c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var nullVersion = null; 91c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 92c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var featureImpl; 93c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var isSupported; 94c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var domImpl; 95c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 96c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block var docRef = null; 97c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if (typeof(this.doc) != 'undefined') { 98c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block docRef = this.doc; 99c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 100c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block doc = load(docRef, "doc", "barfoo"); 101c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block domImpl = doc.implementation; 102c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blocknode = doc.createProcessingInstruction("test-pi","foo"); 103c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("Core",nullVersion); 104c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("coreUnspecifiedVersion",node,featureImpl); 105c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockfeatureImpl = node.getFeature("cOrE",nullVersion); 106c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("cOrEUnspecifiedVersion",node,featureImpl); 107c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockfeatureImpl = node.getFeature("+cOrE",nullVersion); 108c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("PlusCoreUnspecifiedVersion",node,featureImpl); 109c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockfeatureImpl = node.getFeature("org.w3c.domts.bogus.feature",nullVersion); 110c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertNull("unrecognizedFeature",featureImpl); 111c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("cOrE","2.0"); 112c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("Core20",node,featureImpl); 113c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockfeatureImpl = node.getFeature("cOrE","3.0"); 114c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("Core30",node,featureImpl); 115c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockisSupported = node.isSupported("XML",nullVersion); 116c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("XML",nullVersion); 117c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 118c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 119c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 120c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 121c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("XMLUnspecified",node,featureImpl); 122c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 123c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 124c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported = node.isSupported("SVG",nullVersion); 125c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("SVG",nullVersion); 126c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 127c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 128c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 129c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 130c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("SVGUnspecified",node,featureImpl); 131c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 132c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 133c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported = node.isSupported("HTML",nullVersion); 134c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("HTML",nullVersion); 135c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 136c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 137c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 138c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 139c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("HTMLUnspecified",node,featureImpl); 140c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 141c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 142c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported = node.isSupported("Events",nullVersion); 143c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("Events",nullVersion); 144c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 145c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 146c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 147c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 148c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("EventsUnspecified",node,featureImpl); 149c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 150c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 151c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported = node.isSupported("LS",nullVersion); 152c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("LS",nullVersion); 153c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 154c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 155c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 156c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 157c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("LSUnspecified",node,featureImpl); 158c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 159c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 160c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported = node.isSupported("LS-Async",nullVersion); 161c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("LS-Async",nullVersion); 162c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 163c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 164c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 165c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 166c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("LSAsyncUnspecified",node,featureImpl); 167c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 168c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 169c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported = node.isSupported("XPath",nullVersion); 170c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("XPath",nullVersion); 171c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 172c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 173c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 174c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 175c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertSame("XPathUnspecified",node,featureImpl); 176c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 177c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 178c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported = node.isSupported("+HTML",nullVersion); 179c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("HTML",nullVersion); 180c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 181c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 182c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 183c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 184c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertNotNull("PlusHTMLUnspecified",featureImpl); 185c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 186c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 187c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported = node.isSupported("+SVG",nullVersion); 188c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block featureImpl = node.getFeature("SVG",nullVersion); 189c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 190c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block if( 191c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block isSupported 192c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block ) { 193c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block assertNotNull("PlusSVGUnspecified",featureImpl); 194c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 195c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block } 196c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 197c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block} 198c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 199c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 200c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 201c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block 202c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction runTest() { 203c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block nodegetfeature08(); 204c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block} 205