]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojo/tests/parser.html
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojo / tests / parser.html
diff --git a/static/dojo-release-1.1.1/dojo/tests/parser.html b/static/dojo-release-1.1.1/dojo/tests/parser.html
new file mode 100644 (file)
index 0000000..8d7565b
--- /dev/null
@@ -0,0 +1,241 @@
+<html>
+       <head>
+               <title>Parser Unit Test</title>
+               <style type="text/css">
+                       @import "../resources/dojo.css";
+               </style>
+               <script type="text/javascript"
+                       src="../dojo.js"
+                       djConfig="isDebug: true, parseOnLoad: true"></script>
+               <script type="text/javascript">
+                       dojo.require("dojo.parser");
+                       dojo.require("doh.runner");
+
+                       dojo.declare("tests.parser.Class1", null, {
+                               constructor: function(args, node){ dojo.mixin(this, args); }, 
+                               preambleTestProp: 1,
+                               preamble: function(){
+                                       this.preambleTestProp++;
+                               },
+                               intProp: 1,
+                               callCount: 0, // for connect testing
+                               callInc: function(){ this.callCount++; },
+                               callCount2: 0, // for assignment testing
+                               strProp1: "original1",
+                               strProp2: "original2",
+                               arrProp: [],
+                               boolProp1: false,
+                               boolProp2: true,
+                               boolProp3: false,
+                               boolProp4: true,
+                               dateProp1: dojo.date.stamp.fromISOString('2007-01-01'),
+                               dateProp2: dojo.date.stamp.fromISOString('2007-01-01'),
+                               dateProp3: dojo.date.stamp.fromISOString('2007-01-01'),
+                               funcProp: function(){},
+                               funcProp2: function(){},
+                               funcProp3: function(){},
+                               onclick: function(){ this.prototypeOnclick=true; }
+                               // FIXME: have to test dates!!
+                               // FIXME: need to test the args property!!
+                       });
+
+                       dojo.declare("tests.parser.Class2", null, {
+                               constructor: function(){
+                                       this.fromMarkup = false;
+                               }, 
+                               fromMarkup: false,
+                               markupFactory: function(args, node, classCtor){
+                                       var i = new tests.parser.Class2();
+                                       i.fromMarkup = true;
+                                       return i;
+                               }
+                       });
+
+
+                       dojo.declare("tests.parser.Class3", tests.parser.Class2, {
+                               fromMarkup: false,
+                               markupFactory: function(args, node, classCtor){
+                                       var i = new classCtor();
+                                       i.classCtor = classCtor;
+                                       return i;
+                               }
+                       });
+                       
+                       dojo.declare("tests.parser.inputClass", null, {
+                               constructor: function(args, node){ dojo.mixin(this, args); },
+                               // these attributes are special in HTML, they don't have a value specified
+                               disabled: false,
+                               checked: false
+                       });
+
+                       deepTestProp = {
+                               blah: {
+                                       thinger: 1
+                               }
+                       };
+
+                       dojo.addOnLoad(function(){
+                               doh.register("t",
+                                       [
+                                               function testJsId(t){
+                                                       // console.debug(obj);
+                                                       t.t(typeof obj == "object");
+                                               },
+
+                                               // Attribute parsing tests
+                                               function testStrProp(t){
+                                                       // normal string parameter
+                                                       t.t(dojo.isString(obj.strProp1));
+                                                       t.is("text", obj.strProp1);
+                                                       
+                                                       // make sure that you override a string value like "foo" to a blank value
+                                                       t.t(dojo.isString(obj.strProp2));
+                                                       t.is("", obj.strProp2);
+                                               },
+                                               function testIntProp(t){
+                                                       t.is("number", (typeof obj.intProp));
+                                                       t.is(5, obj.intProp);
+                                               },
+                                               function testArrProp(t){
+                                                       t.is(3, obj.arrProp.length);
+                                                       t.is(3, obj.arrProp[1].length);
+                                                       t.is(["foo", "bar", "baz"], obj.arrProp);
+                                               },
+                                               function testBoolProp(t){
+                                                       // make sure that both true and false get read correctly,
+                                                       // and that unspecified attributes' values don't change
+                                                       
+                                                       // boolProp1 specified at true
+                                                       t.is("boolean", (typeof obj.boolProp1));
+                                                       t.t(obj.boolProp1);
+                                                       
+                                                       // boolProp2 specified as false
+                                                       t.is("boolean", (typeof obj.boolProp2));
+                                                       t.f(obj.boolProp2);
+                                                       
+                                                       // boolProp3 not specified (prototype says false)
+                                                       t.is("boolean", (typeof obj.boolProp3));
+                                                       t.f(obj.boolProp3);
+                                                       
+                                                       // boolProp4 not specified (prototype says true)
+                                                       t.is("boolean", (typeof obj.boolProp4));
+                                                       t.t(obj.boolProp4);
+                                               },
+                                               function testDateProp(t){
+                                                       // dateProp1 specified as 2006-1-1
+                                                       t.is("2006-01-01", dojo.date.stamp.toISOString(obj.dateProp1, {selector: 'date'}));
+                                                       
+                                                       // dateProp2="", should map to NaN (a blank value on DateTextBox)
+                                                       t.t(isNaN(obj.dateProp2));
+                                                       
+                                                       // dateProp3="now", should map to current date
+                                                       t.is(dojo.date.stamp.toISOString(new Date(), {selector: 'date'}),
+                                                               dojo.date.stamp.toISOString(obj.dateProp3, {selector: 'date'}));
+                                               },
+                                               function testDisabledFlag(t){
+                                                       t.is("boolean", (typeof disabledObj.disabled));
+                                                       t.t(disabledObj.disabled);
+                                                       t.f(disabledObj.checked);
+                                               },
+                                               function testCheckedFlag(t){
+                                                       t.is("boolean", (typeof checkedObj.checked));
+                                                       t.f(checkedObj.disabled);
+                                                       t.t(checkedObj.checked);
+                                               },
+                                               function testFunctionProp(t){
+                                                       // make sure that unspecified functions (even with common names)
+                                                       // don't get overridden (bug #3074)
+                                                       obj.onclick();
+                                                       t.t(obj.prototypeOnclick);
+                                                       
+                                                       // funcProp2="foo"
+                                                       obj.funcProp2();
+                                                       t.t(obj.fooCalled);
+                                                       
+                                                       // funcProp3="this.func3Called=true;"
+                                                       obj.funcProp3();
+                                                       t.t(obj.func3Called);
+                                               },
+
+                                               // test <script> tags inside innerHTML of source node
+                                               "t.is(4, obj.preambleTestProp);",
+                                               "t.is(deepTestProp, obj.deepProp);",
+                                               function testConnect(t){
+                                                       obj.callInc();
+                                                       t.is(2, obj.callCount);
+                                               },
+                                               function testFunctionAssignment(t){
+                                                       obj.callInc2();
+                                                       t.is(1, obj.callCount2);
+                                               },
+                                               function testSubNodeParse(t){
+                                                       t.f(dojo.exists("obj2"));
+                                                       var toParse = dojo.byId("toParse");
+                                                       toParse.setAttribute("dojoType", toParse.getAttribute("type"));
+                                                       dojo.parser.parse(toParse.parentNode);
+                                                       t.t(dojo.exists("obj2"));
+                                                       t.is("tests.parser.Class1", obj2.declaredClass);
+                                               },
+                                               function testMarkupFactory(t){
+                                                       t.t(dojo.exists("obj3"));
+                                                       t.t(obj3.fromMarkup);
+                                               },
+                                               function testMarkupFactoryClass(t){
+                                                       t.t(dojo.exists("obj4"));
+                                                       t.is(obj4.classCtor, tests.parser.Class3);
+                                                       t.t(obj4 instanceof tests.parser.Class3);
+                                                       t.t(obj4 instanceof tests.parser.Class2);
+                                               },
+                                               function testDisabledFlag(t){
+                                                       t.t(disabledObj.disabled);
+                                                       t.f(disabledObj.checked);
+                                               },
+                                               function testCheckedFlag(t){
+                                                       t.f(checkedObj.disabled);
+                                                       t.t(checkedObj.checked);
+                                               }                                               
+                                       ]
+                               );
+                               doh.run();
+                       })
+               </script>
+       </head>
+       <body>
+               <h1>Parser Unit Test</h1>
+               <script>
+                       function foo(){ this.fooCalled=true; }
+               </script>
+               <div dojoType="tests.parser.Class1" jsId="obj" 
+                       strProp1="text" strProp2=""
+                       intProp="5"
+                       arrProp="foo, bar, baz"
+                       boolProp1="true" boolProp2="false"
+                       dateProp1="2006-01-01" dateProp2="" dateProp3="now"
+                       funcProp2="foo" funcProp3="this.func3Called=true;"
+               >
+                       <script type="dojo/method" event="preamble">
+                               this.preambleTestProp = 3;
+                       </script>
+                       <script type="dojo/method">
+                               // this should be run immediately
+                               this.deepProp = deepTestProp;
+                       </script>
+                       <script type="dojo/connect" event="callInc">
+                               this.callCount++;
+                       </script>
+                       <script type="dojo/method" event="callInc2">
+                               this.callCount2++;
+                       </script>
+               </div>
+               <div>
+                       <div type="tests.parser.Class1" jsId="obj2" id="toParse">
+                       </div>
+               </div>
+               <div dojoType="tests.parser.Class2" jsId="obj3">
+               </div>
+               <div dojoType="tests.parser.Class3" jsId="obj4">
+               </div>
+               <input dojoType="tests.parser.inputClass" jsId="checkedObj" checked type="checkbox">
+               <button dojoType="tests.parser.inputClass" jsId="disabledObj" disabled>hi</button>
+       </body>
+</html>