]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojo/tests/behavior.html
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojo / tests / behavior.html
diff --git a/static/dojo-release-1.1.1/dojo/tests/behavior.html b/static/dojo-release-1.1.1/dojo/tests/behavior.html
new file mode 100644 (file)
index 0000000..280fc29
--- /dev/null
@@ -0,0 +1,106 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+       "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+       <head>
+               <title>Testing dojo.behavior</title>
+               <style type="text/css">
+                       @import "../resources/dojo.css";
+               </style>
+               <script type="text/javascript" 
+                       src="../dojo.js" djConfig="isDebug: true, popup: true"></script>
+               <script type="text/javascript">
+                       dojo.require("doh.runner");
+                       dojo.require("dojo.behavior");
+
+                       var applyCount = 0;
+
+                       var behaviorObj = {
+                               ".bar":                 function(elem){ 
+                                       dojo.style(elem, "opacity", 0.5);
+                                       applyCount++;
+                               },
+                               ".foo > span":  function(elem){ 
+                                       elem.style.fontStyle = "italic";
+                                       applyCount++;
+                               }
+                       }
+
+                       topicCount = 0;
+                       dojo.subscribe("/foo", function(){ topicCount++; });
+
+                       // no behaviors should be executed when onload fires
+                       dojo.addOnLoad(function(){
+                               doh.register("t", 
+                                       [
+                                               function add(t){
+                                                       t.f(dojo.behavior._behaviors[".bar"]);
+                                                       t.f(dojo.behavior._behaviors[".foo > span"]);
+                                                       dojo.behavior.add(behaviorObj);
+                                                       // make sure they got plopped in
+                                                       t.t(dojo.behavior._behaviors[".bar"]);
+                                                       t.is(1, dojo.behavior._behaviors[".bar"].length);
+                                                       t.t(dojo.behavior._behaviors[".foo > span"]);
+                                                       t.is(1, dojo.behavior._behaviors[".foo > span"].length);
+                                               },
+                                               function apply(t){
+                                                       t.is(0, applyCount);
+                                                       dojo.behavior.apply();
+                                                       t.is(2, applyCount);
+
+                                                       // reapply and make sure we only match once
+                                                       dojo.behavior.apply();
+                                                       t.is(2, applyCount);
+                                               },
+                                               function reapply(t){
+                                                       t.is(2, applyCount);
+                                                       // add the rules again
+                                                       dojo.behavior.add(behaviorObj);
+                                                       dojo.behavior.apply();
+                                                       t.is(4, applyCount);
+                                                       // dojo.behavior.apply();
+                                                       // t.is(4, applyCount);
+                                                       // dojo.query(".bar").styles("opacity", 1.0);
+                                               },
+                                               function topics(t){
+                                                       var d = new doh.Deferred();
+                                                       t.is(0, topicCount);
+                                                       dojo.behavior.add({ ".foo": "/foo" });
+                                                       dojo.behavior.apply();
+                                                       t.is(2, topicCount);
+
+                                                       dojo.behavior.add({ ".foo": {
+                                                                       "onfocus": "/foo" 
+                                                               }
+                                                       });
+                                                       dojo.behavior.apply();
+                                                       t.is(2, topicCount);
+                                                       dojo.byId("blah").focus();
+                                                       dojo.byId("blah").blur();
+                                                       dojo.byId("blah").focus();
+                                                       setTimeout(function(){
+                                                               // blur/focus event generation isn't synchronous on IE
+                                                               try{
+                                                                       t.is(4, topicCount);
+                                                                       d.callback(true);
+                                                               }catch(e){
+                                                                       d.errback(e);
+                                                               }
+                                                       }, 10);
+                                                       return d;
+                                               }
+                                       ]
+                               );
+                               doh.run();
+                       });
+               </script>
+       </head>
+       <body>
+               <div class="foo" id="fooOne">
+                       <span>.foo &gt; span</span>     
+                       <div class="bar">
+                               <span>.foo &gt; .bar &gt; span</span>   
+                       </div>
+               </div>
+               <input type="text" id="blah" class="foo blah" name="thinger" value="thinger" tabIndex="0">
+       </body>
+</html>