Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / widget / DocTester.js

History | View | Annotate | Download (3.25 KB)

1
/*
2
        Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3
        Available via Academic Free License >= 2.1 OR the modified BSD license.
4
        see: http://dojotoolkit.org/license for details
5
*/
6

    
7

    
8
if(!dojo._hasResource["dojox.widget.DocTester"]){
9
dojo._hasResource["dojox.widget.DocTester"]=true;
10
dojo.provide("dojox.widget.DocTester");
11
dojo.require("dojo.string");
12
dojo.require("dijit._Widget");
13
dojo.require("dijit._Templated");
14
dojo.require("dojox.form.BusyButton");
15
dojo.require("dojox.testing.DocTest");
16
dojo.declare("dojox.widget.DocTester",[dijit._Widget,dijit._Templated],{templateString:dojo.cache("dojox.widget","DocTester/DocTester.html","<div dojoAttachPoint=\"domNode\" class=\"dojoxDocTester\">\n\t<div dojoAttachPoint=\"containerNode\"></div>\n\t<button dojoType=\"dojox.form.BusyButton\" busyLabel=\"Testing...\" dojoAttachPoint=\"runButtonNode\">Run tests</button>\n\t<button dojoType=\"dijit.form.Button\" dojoAttachPoint=\"resetButtonNode\" style=\"display:none;\">Reset</button>\n\t<span>\n\t\t<span dojoAttachPoint=\"numTestsNode\">0</span> tests,\n\t\t<span dojoAttachPoint=\"numTestsOkNode\">0</span> passed,\n\t\t<span dojoAttachPoint=\"numTestsNokNode\">0</span> failed\n\t</span>\n</div>\n"),widgetsInTemplate:true,_fillContent:function(_1){
17
var _2=_1.innerHTML;
18
this.doctests=new dojox.testing.DocTest();
19
this.tests=this.doctests.getTestsFromString(this._unescapeHtml(_2));
20
var _3=dojo.map(this.tests,"return item.line-1");
21
var _4=_2.split("\n");
22
var _5="<div class=\"actualResult\">FAILED, actual result was: <span class=\"result\"></span></div>";
23
var _6="<pre class=\"testCase testNum0 odd\">";
24
for(var i=0;i<_4.length;i++){
25
var _7=dojo.indexOf(_3,i);
26
if(_7>0&&_7!=-1){
27
var _8=_7%2?"even":"odd";
28
_6+=_5;
29
_6+="</pre><pre class=\"testCase testNum"+_7+" "+_8+"\">";
30
}
31
_6+=_4[i].replace(/^\s+/,"")+"\n";
32
}
33
_6+=_5+"</pre>";
34
this.containerNode.innerHTML=_6;
35
},postCreate:function(){
36
this.inherited("postCreate",arguments);
37
dojo.connect(this.runButtonNode,"onClick",dojo.hitch(this,"runTests"));
38
dojo.connect(this.resetButtonNode,"onClick",dojo.hitch(this,"reset"));
39
this.numTestsNode.innerHTML=this.tests.length;
40
},runTests:function(){
41
var _9={ok:0,nok:0};
42
for(var i=0;i<this.tests.length;i++){
43
var _a=this.doctests.runTest(this.tests[i].commands,this.tests[i].expectedResult);
44
dojo.query(".testNum"+i,this.domNode).addClass(_a.success?"resultOk":"resultNok");
45
if(!_a.success){
46
_9.nok++;
47
this.numTestsNokNode.innerHTML=_9.nok;
48
var _b=dojo.query(".testNum"+i+" .actualResult",this.domNode)[0];
49
dojo.style(_b,"display","inline");
50
dojo.query(".result",_b)[0].innerHTML=dojo.toJson(_a.actualResult);
51
}else{
52
_9.ok++;
53
this.numTestsOkNode.innerHTML=_9.ok;
54
}
55
}
56
this.runButtonNode.cancel();
57
dojo.style(this.runButtonNode.domNode,"display","none");
58
dojo.style(this.resetButtonNode.domNode,"display","");
59
},reset:function(){
60
dojo.style(this.runButtonNode.domNode,"display","");
61
dojo.style(this.resetButtonNode.domNode,"display","none");
62
this.numTestsOkNode.innerHTML="0";
63
this.numTestsNokNode.innerHTML="0";
64
dojo.query(".actualResult",this.domNode).style("display","none");
65
dojo.query(".testCase",this.domNode).removeClass("resultOk").removeClass("resultNok");
66
},_unescapeHtml:function(_c){
67
_c=String(_c).replace(/&amp;/gm,"&").replace(/&lt;/gm,"<").replace(/&gt;/gm,">").replace(/&quot;/gm,"\"");
68
return _c;
69
}});
70
}