1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
5 <title>Dijit manager unit test</title>
6 <style type="text/css">
7 @import "../../../dojo/resources/dojo.css";
8 @import "../css/dijitTests.css";
10 <script type="text/javascript" src="../../../dojo/dojo.js"
11 djConfig="isDebug: true, parseOnLoad: true"></script>
12 <script type="text/javascript" src="../_testCommon.js"></script>
14 <script type="text/javascript">
15 dojo.require("doh.runner");
16 dojo.require("dijit.dijit");
18 dojo.declare("foo", dijit._Widget, {
24 dojo.declare("bar", dijit._Widget, {
30 dojo.addOnLoad(function(){
31 doh.register("dijit._base.manager",
33 function forEachTest(t){
35 dijit.registry.forEach(function(widget){ names.push(widget.name); });
36 t.is(names.join(" "), "bob is your uncle");
38 function filterTest(t){
41 filter(function(widget){ return widget.attr1==10; }).
42 forEach(function(widget){ names.push(widget.name); });
43 t.is(names.join(" "), "bob uncle");
46 t.is(dijit.byId("three").name, "your");
52 forEach(function(widget){ names.push(widget.name); });
53 t.is(names.join(" "), "your uncle");
55 function deleteTest(t){
57 dijit.byId("two").destroy();
58 dijit.byId("four").destroy();
60 dijit.registry.forEach(function(widget){ names.push(widget.name); });
61 t.is(names.join(" "), "bob your");
63 function getEnclosingWidgetTest(t){
64 t.is(dijit.getEnclosingWidget(dojo.byId("not-a-widget")), null);
65 t.is(dijit.getEnclosingWidget(dojo.byId("three")).name, "your");
66 t.is(dijit.getEnclosingWidget(dojo.byId("three.one")).name, "your");
67 t.is(dijit.getEnclosingWidget(dojo.byId("three.one.one")).name, "your");
69 function isTabNavigable(t){
70 t.t(dijit.isTabNavigable(dojo.byId("a-with-href")));
71 t.f(dijit.isTabNavigable(dojo.byId("a-without-href")));
72 t.t(dijit.isTabNavigable(dojo.byId("area")));
73 t.t(dijit.isTabNavigable(dojo.byId("button")));
74 t.t(dijit.isTabNavigable(dojo.byId("input")));
75 t.t(dijit.isTabNavigable(dojo.byId("object")));
76 t.t(dijit.isTabNavigable(dojo.byId("select")));
77 t.t(dijit.isTabNavigable(dojo.byId("textarea")));
78 t.f(dijit.isTabNavigable(dojo.byId("empty")));
79 t.t(dijit.isTabNavigable(dojo.byId("zero-tabindex-div")));
81 function findTabNullOnEmpty(t){
82 t.is(null, dijit.getFirstInTabbingOrder("empty"));
83 t.is(null, dijit.getLastInTabbingOrder("empty"));
85 function findTabElements(t){
86 t.is(null, dijit.getFirstInTabbingOrder("div-container"));
87 t.is(null, dijit.getFirstInTabbingOrder("a-without-href-container"));
88 t.is("a-with-href", dijit.getFirstInTabbingOrder("a-with-href-container").id);
90 // in Safari area elements are not in the tab order
91 // and their display style property is "none";
92 // therefore it is expected that this test will fail
94 t.is("area", dijit.getFirstInTabbingOrder("area-map").id);
97 t.is("button", dijit.getFirstInTabbingOrder("button-container").id);
98 t.is("input", dijit.getFirstInTabbingOrder("input-container").id);
99 t.is("object", dijit.getFirstInTabbingOrder("object-container").id);
100 t.is("select", dijit.getFirstInTabbingOrder("select-container").id);
101 t.is("textarea", dijit.getFirstInTabbingOrder("textarea-container").id);
102 t.is(null, dijit.getLastInTabbingOrder("div-container"));
103 t.is(null, dijit.getLastInTabbingOrder("a-without-href-container"));
104 t.is("a-with-href", dijit.getLastInTabbingOrder("a-with-href-container").id);
106 // in Safari area elements are not in the tab order
107 // and their display style property is "none";
108 // therefore it is expected that this test will fail
110 t.is("area", dijit.getLastInTabbingOrder("area-map").id);
113 t.is("button", dijit.getLastInTabbingOrder("button-container").id);
114 t.is("input", dijit.getLastInTabbingOrder("input-container").id);
115 t.is("object", dijit.getLastInTabbingOrder("object-container").id);
116 t.is("select", dijit.getLastInTabbingOrder("select-container").id);
117 t.is("textarea", dijit.getLastInTabbingOrder("textarea-container").id);
119 function findTabOnElementRatherThanString(t){
120 t.is("a-with-href", dijit.getFirstInTabbingOrder(dojo.byId("a-with-href-container")).id);
121 t.is("a-with-href", dijit.getLastInTabbingOrder(dojo.byId("a-with-href-container")).id);
123 function findTabSkipDisabled(t){
124 t.is("not-disabled-input", dijit.getFirstInTabbingOrder("skip-disabled").id);
125 t.is("not-disabled-input", dijit.getLastInTabbingOrder("skip-disabled").id);
127 function findTabZeroTabindex(t){
128 t.is("zero-tabindex-div", dijit.getFirstInTabbingOrder("zero-tabindex-div-container").id);
129 t.is("zero-tabindex-input", dijit.getFirstInTabbingOrder("zero-tabindex-input-container").id);
130 t.is("zero-tabindex-div", dijit.getLastInTabbingOrder("zero-tabindex-div-container").id);
131 t.is("zero-tabindex-input", dijit.getLastInTabbingOrder("zero-tabindex-input-container").id);
133 function findTabPositiveTabindex(t){
134 t.is("positive-tabindex-input1a", dijit.getFirstInTabbingOrder("positive-tabindex-mixed-with-no-tabindex").id);
135 t.is("positive-tabindex-input3a", dijit.getFirstInTabbingOrder("positive-tabindex").id);
136 t.is("no-tabindex-input2", dijit.getLastInTabbingOrder("positive-tabindex-mixed-with-no-tabindex").id);
137 t.is("positive-tabindex-input4b", dijit.getLastInTabbingOrder("positive-tabindex").id);
139 function findTabSkipMinusOneTabindex(t){
140 t.is("not-minus-one-input", dijit.getFirstInTabbingOrder("skip-minus-one").id);
141 t.is("not-minus-one-input", dijit.getLastInTabbingOrder("skip-minus-one").id);
143 function findTabDescend(t){
144 t.is("child-input1", dijit.getFirstInTabbingOrder("descend").id);
145 t.is("child-input2", dijit.getLastInTabbingOrder("descend").id);
147 function findTabOuterInner(t){
148 t.is("outer1", dijit.getFirstInTabbingOrder("outer-inner-container").id);
149 t.is("inner2", dijit.getLastInTabbingOrder("outer-inner-container").id);
151 function skipNotShown(t){
152 t.is(null, dijit.getFirstInTabbingOrder("hidden-element-container"));
153 t.is(null, dijit.getFirstInTabbingOrder("hidden-container-tabindex-zero"));
154 t.is(null, dijit.getFirstInTabbingOrder("hidden-container-no-tabindex"));
155 t.is(null, dijit.getFirstInTabbingOrder("container-with-hidden-containers"));
157 t.is(null, dijit.getFirstInTabbingOrder("display-none-element-container"));
158 t.is(null, dijit.getFirstInTabbingOrder("display-none-container-tabindex-zero"));
159 t.is(null, dijit.getFirstInTabbingOrder("display-none-container-no-tabindex"));
160 t.is(null, dijit.getFirstInTabbingOrder("container-with-display-none-containers"));
170 <h1>Dijit Manager Unit Test</h1>
171 <div dojoType="foo" id="one" name="bob" attr1="10" attr2="10"></div>
172 <div dojoType="foo" id="two" name="is" attr1="5" attr2="10"></div>
173 <div dojoType="bar" id="three" name="your" attr1="5" attr2="5">
175 <div id="three.one.one"></div>
178 <div dojoType="bar" id="four" name="uncle" attr1="10" attr2="5"></div>
179 <div id="not-a-widget"></div>
181 <div id="empty"></div>
183 <div id="div-container">
186 <div id="a-without-href-container">
187 <a id="a-without-href" name="named-link-anchor"></a>
189 <div id="a-with-href-container">
190 <a id="a-with-href" href="#named-link-anchor"></a>
193 <div><img src="../images/flatScreen.gif" alt="picture of a flat-screen monitor" usemap="#area-map"></div>
194 <map id="area-map" name="area-map">
195 <area id="area" href="#" alt="example area" shape="rect" coords="0,0,8,8">
198 <div id="button-container">
199 <button id="button"></button>
201 <div id="input-container">
204 <div id="object-container">
205 <object id="object"></object>
207 <div id="select-container">
208 <select id="select"></select>
210 <div id="textarea-container">
211 <textarea id="textarea"></textarea>
214 <div id="skip-disabled">
215 <input id="disabled-input1" disabled="disabled">
216 <input id="not-disabled-input">
217 <input id="disabled-input2" disabled="disabled">
220 <div id="zero-tabindex-div-container">
221 <div id="zero-tabindex-div" tabindex="0"></div>
224 <div id="zero-tabindex-input-container">
225 <input id="zero-tabindex-input" tabindex="0">
228 <div id="positive-tabindex-mixed-with-no-tabindex">
229 <input id="no-tabindex-input1">
230 <input id="no-tabindex-input2">
231 <input id="positive-tabindex-input1a" tabindex="1">
232 <input id="positive-tabindex-input1b" tabindex="1">
233 <input id="positive-tabindex-input2a" tabindex="2">
234 <input id="positive-tabindex-input2b" tabindex="2">
237 <div id="positive-tabindex">
238 <input id="positive-tabindex-input3a" tabindex="3">
239 <input id="positive-tabindex-input3b" tabindex="3">
240 <input id="positive-tabindex-input4a" tabindex="4">
241 <input id="positive-tabindex-input4b" tabindex="4">
244 <div id="skip-minus-one">
245 <input id="minus-one-input1" tabindex="-1">
246 <input id="not-minus-one-input">
247 <input id="minus-one-input2" tabindex="-1">
251 <input disabled="disabled">
253 <input disabled="disabled">
255 <input disabled="disabled">
259 <input disabled="disabled">
261 <input disabled="disabled">
264 <input id="child-input1">
267 <input id="child-input2">
272 <input disabled="disabled">
274 <input disabled="disabled">
276 <input disabled="disabled">
279 <div id="outer-inner-container">
280 <div id="outer1" tabindex="0">
281 <div id="inner1" tabindex="0"></div>
283 <div id="outer2" tabindex="0">
284 <div id="inner2" tabindex="0"></div>
288 <div id="hidden-element-container">
289 <div id="hidden-element" tabindex="0" style="visibility: hidden;">
293 <div id="container-with-hidden-containers">
294 <div id="hidden-container-tabindex-zero" tabindex="0" style="visibility: hidden;">
295 <div id="inside-hidden-container-tabindex-zero" tabindex="0">
299 <div id="hidden-container-no-tabindex" style="visibility: hidden;">
300 <div id="inside-hidden-container-no-tabindex" tabindex="0">
305 <div id="display-none-element-container">
306 <div id="display-none-element" tabindex="0" style="display: none;">
310 <div id="container-with-display-none-containers">
311 <div id="display-none-container-tabindex-zero" tabindex="0" style="display: none;">
312 <div id="inside-display-none-container-tabindex-zero" tabindex="0">
316 <div id="display-none-container-no-tabindex" style="display: none;">
317 <div id="inside-display-none-container-no-tabindex" tabindex="0">