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/domconfigcanonicalform1";
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
43c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      docsLoaded = 0;
44c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
45c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block       if (docsLoaded == 0) {
46c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block          setUpPageStatus = 'complete';
47c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block       }
48c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    } catch(ex) {
49c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    	catchInitializationError(builder, ex);
50c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block        setUpPageStatus = 'complete';
51c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    }
52c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block}
53c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
54c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
55c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
56c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//
57c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//   This method is called on the completion of
58c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//      each asychronous load started in setUpTests.
59c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//
60c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//   When every synchronous loaded document has completed,
61c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//      the page status is changed which allows the
62c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//      body of the test to be executed.
63c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction loadComplete() {
64c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    if (++docsLoaded == 0) {
65c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block        setUpPageStatus = 'complete';
66c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    }
67c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block}
68c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
69c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
70c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block/**
71c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* Checks behavior of "canonical-form" configuration parameter.
72c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @author Curt Arnold
73c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#parameter-canonical-form
74c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#DOMConfiguration-getParameter
75c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#DOMConfiguration-property
76c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block*/
77c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction domconfigcanonicalform1() {
78c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block   var success;
79c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    if(checkInitialization(builder, "domconfigcanonicalform1") != null) return;
80c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    var domImpl;
81c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var doc;
82c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var domConfig;
83c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var nullDocType = null;
84c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
85c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var canSet;
86c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var state;
87c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var parameter = "cAnOnical-form";
88c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      domImpl = getImplementation();
89c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockdoc = domImpl.createDocument("http://www.w3.org/1999/xhtml","html",nullDocType);
90c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      domConfig = doc.domConfig;
91c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
92c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      state = domConfig.getParameter(parameter);
93c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      assertFalse("defaultFalse",state);
94c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockcanSet = domConfig.canSetParameter(parameter,false);
95c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      assertTrue("canSetFalse",canSet);
96c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockcanSet = domConfig.canSetParameter(parameter,true);
97c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
98c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	if(
99c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	canSet
100c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	) {
101c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	domConfig.setParameter(parameter, true);
102c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	 state = domConfig.getParameter(parameter);
103c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      assertTrue("setTrueEffective",state);
104c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
105c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	}
106c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
107c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block		else {
108c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
109c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	{
110c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block		success = false;
111c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block		try {
112c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block            domConfig.setParameter(parameter, true);
113c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	   }
114c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block		catch(ex) {
115c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      success = (typeof(ex.code) != 'undefined' && ex.code == 9);
116c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block		}
117c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block		assertTrue("throw_NOT_SUPPORTED_ERR",success);
118c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	}
119c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockstate = domConfig.getParameter(parameter);
120c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      assertFalse("setTrueNotEffective",state);
121c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
122c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block		}
123c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	domConfig.setParameter(parameter, false);
124c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
125c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block}
126c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
127c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
128c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
129c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
130c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction runTest() {
131c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block   domconfigcanonicalform1();
132c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block}
133