DocTest.js 1.9 KB
//>>built
define("dojox/testing/DocTest",["dojo/string"],function(){return dojo.declare("dojox.testing.DocTest",null,{errors:[],getTests:function(a){a=dojo.moduleUrl(a).path;a=a.substring(0,a.length-1)+".js";dojo.xhrGet({url:a,handleAs:"text"});a=dojo._getText(a);return this._getTestsFromString(a,!0)},getTestsFromString:function(a){return this._getTestsFromString(a,!1)},_getTestsFromString:function(a,b){var d=dojo.hitch(dojo.string,"trim");a=a.split("\n");for(var k=a.length,f=[],g=[],h=[],e=null,l=0;l<k+1;l++){var c=
d(a[l]||"");b&&c.match(/^\/\/\s+>>>\s.*/)||c.match(/^\s*>>>\s.*/)?(e||(e=l+1),0<h.length&&(f.push({commands:g,expectedResult:h.join("\n"),line:e}),g=[],h=[],e=l+1),c=b?d(c).substring(2,c.length):c,c=d(c).substring(3,c.length),g.push(d(c))):b&&!c.match(/^\/\/\s+.*/)||!g.length||0!=h.length?0<g.length&&h.length&&(b&&!c.match(/^\/\/\s*$/)||f.push({commands:g,expectedResult:h.join("\n"),line:e}),b&&!c.match(/^\/\//)&&f.push({commands:g,expectedResult:h.join("\n"),line:e}),g=[],h=[],e=0):(c=b?d(c).substring(3,
c.length):c,h.push(d(c)))}return f},run:function(a){this.errors=[];(a=this.getTests(a))&&this._run(a)},_run:function(a){var b=a.length;this.tests=b;for(var d=0,k=0;k<b;k++){var f=a[k],g=this.runTest(f.commands,f.expectedResult),h="Test "+(k+1)+": ",e=f.commands.join(" "),e=50<e.length?e.substr(0,50)+"...":e;g.success?(console.info(h+"OK: "+e),d+=1):(this.errors.push({commands:f.commands,actual:g.actualResult,expected:f.expectedResult}),console.error(h+"Failed: "+e,{commands:f.commands,actualResult:g.actualResult,
expectedResult:f.expectedResult}))}console.info(b+" tests ran.",d+" Success,",this.errors.length+" Errors")},runTest:function(a,b){var d={success:!1,actualResult:null};a=a.join("\n");d.actualResult=eval(a);if(String(d.actualResult)==b||dojo.toJson(d.actualResult)==b||'"'==b.charAt(0)&&'"'==b.charAt(b.length-1)&&String(d.actualResult)==b.substring(1,b.length-1))d.success=!0;return d}})});