82 lines
2.4 KiB
JavaScript
82 lines
2.4 KiB
JavaScript
|
//>>built
|
||
|
define("dojox/testing/DocTest",["dojo/string"],function(){
|
||
|
dojo.declare("dojox.testing.DocTest",null,{errors:[],getTests:function(_1){
|
||
|
var _2=dojo.moduleUrl(_1).path;
|
||
|
var _3=_2.substring(0,_2.length-1)+".js";
|
||
|
var _4=dojo.xhrGet({url:_3,handleAs:"text"});
|
||
|
var _5=dojo._getText(_3);
|
||
|
return this._getTestsFromString(_5,true);
|
||
|
},getTestsFromString:function(_6){
|
||
|
return this._getTestsFromString(_6,false);
|
||
|
},_getTestsFromString:function(_7,_8){
|
||
|
var _9=dojo.hitch(dojo.string,"trim");
|
||
|
var _a=_7.split("\n");
|
||
|
var _b=_a.length;
|
||
|
var _c=[];
|
||
|
var _d={commands:[],expectedResult:[],line:null};
|
||
|
for(var i=0;i<_b+1;i++){
|
||
|
var l=_9(_a[i]||"");
|
||
|
if((_8&&l.match(/^\/\/\s+>>>\s.*/))||l.match(/^\s*>>>\s.*/)){
|
||
|
if(!_d.line){
|
||
|
_d.line=i+1;
|
||
|
}
|
||
|
if(_d.expectedResult.length>0){
|
||
|
_c.push({commands:_d.commands,expectedResult:_d.expectedResult.join("\n"),line:_d.line});
|
||
|
_d={commands:[],expectedResult:[],line:i+1};
|
||
|
}
|
||
|
l=_8?_9(l).substring(2,l.length):l;
|
||
|
l=_9(l).substring(3,l.length);
|
||
|
_d.commands.push(_9(l));
|
||
|
}else{
|
||
|
if((!_8||l.match(/^\/\/\s+.*/))&&_d.commands.length&&_d.expectedResult.length==0){
|
||
|
l=_8?_9(l).substring(3,l.length):l;
|
||
|
_d.expectedResult.push(_9(l));
|
||
|
}else{
|
||
|
if(_d.commands.length>0&&_d.expectedResult.length){
|
||
|
if(!_8||l.match(/^\/\/\s*$/)){
|
||
|
_c.push({commands:_d.commands,expectedResult:_d.expectedResult.join("\n"),line:_d.line});
|
||
|
}
|
||
|
if(_8&&!l.match(/^\/\//)){
|
||
|
_c.push({commands:_d.commands,expectedResult:_d.expectedResult.join("\n"),line:_d.line});
|
||
|
}
|
||
|
_d={commands:[],expectedResult:[],line:0};
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return _c;
|
||
|
},run:function(_e){
|
||
|
this.errors=[];
|
||
|
var _f=this.getTests(_e);
|
||
|
if(_f){
|
||
|
this._run(_f);
|
||
|
}
|
||
|
},_run:function(_10){
|
||
|
var len=_10.length;
|
||
|
this.tests=len;
|
||
|
var oks=0;
|
||
|
for(var i=0;i<len;i++){
|
||
|
var t=_10[i];
|
||
|
var res=this.runTest(t.commands,t.expectedResult);
|
||
|
var msg="Test "+(i+1)+": ";
|
||
|
var _11=t.commands.join(" ");
|
||
|
_11=(_11.length>50?_11.substr(0,50)+"...":_11);
|
||
|
if(res.success){
|
||
|
oks+=1;
|
||
|
}else{
|
||
|
this.errors.push({commands:t.commands,actual:res.actualResult,expected:t.expectedResult});
|
||
|
console.error(msg+"Failed: "+_11,{commands:t.commands,actualResult:res.actualResult,expectedResult:t.expectedResult});
|
||
|
}
|
||
|
}
|
||
|
},runTest:function(_12,_13){
|
||
|
var ret={success:false,actualResult:null};
|
||
|
var _14=_12.join("\n");
|
||
|
ret.actualResult=eval(_14);
|
||
|
if((String(ret.actualResult)==_13)||(dojo.toJson(ret.actualResult)==_13)||((_13.charAt(0)=="\"")&&(_13.charAt(_13.length-1)=="\"")&&(String(ret.actualResult)==_13.substring(1,_13.length-1)))){
|
||
|
ret.success=true;
|
||
|
}
|
||
|
return ret;
|
||
|
}});
|
||
|
return dojox.testing.DocTest;
|
||
|
});
|