/tags/jsdoc_toolkit-2.0.1/jsdoc-toolkit/app/frame/Testrun.js
JavaScript | 129 lines | 79 code | 15 blank | 35 comment | 18 complexity | 2627d646ff96e75711535fd746eb2e21 MD5 | raw file
- /**
- * @fileOverview
- * @name JsTestrun
- * @author Michael Mathews micmath@gmail.com
- * @url $HeadURL: http://jsdoc-toolkit.googlecode.com/svn/tags/jsdoc_toolkit-2.0.1/jsdoc-toolkit/app/frame/Testrun.js $
- * @revision $Id: Testrun.js 418 2008-01-15 21:40:33Z micmath $
- * @license <a href="http://en.wikipedia.org/wiki/MIT_License">X11/MIT License</a>
- * (See the accompanying README file for full details.)
- */
-
- /**
- Yet another unit testing tool for JavaScript.
- @author Michael Mathews <a href="mailto:micmath@gmail.com">micmath@gmail.com</a>
- @param {object} testCases Properties are testcase names, values are functions to execute as tests.
- */
- function testrun(testCases) {
- var ran = 0;
- for (t in testCases) {
- var result = testCases[t]();
- ran++;
- }
-
- return testrun.reportOut+"-------------------------------\n"+((testrun.fails>0)? ":( Failed "+testrun.fails+"/" : ":) Passed all ")+testrun.count+" test"+((testrun.count == 1)? "":"s")+".\n";
- }
- testrun.count = 0;
- testrun.current = null;
- testrun.passes = 0;
- testrun.fails = 0;
- testrun.reportOut = "";
- /** @private */
- testrun.report = function(text) {
- testrun.reportOut += text+"\n";
- }
- /**
- Check if test evaluates to true.
- @param {string} test To be evaluated.
- @param {string} message Optional. To be displayed in the report.
- @return {boolean} True if the string test evaluates to true.
- */
- ok = function(test, message) {
- testrun.count++;
-
- var result;
- try {
- result = eval(test);
-
- if (result) {
- testrun.passes++;
- testrun.report(" OK "+testrun.count+" - "+((message != null)? message : ""));
- }
- else {
- testrun.fails++;
- testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
- }
- }
- catch(e) {
- testrun.fails++
- testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
- }
- }
- /**
- Check if test is same as expected.
- @param {string} test To be evaluated.
- @param {string} expected
- @param {string} message Optional. To be displayed in the report.
- @return {boolean} True if (test == expected). Note that the comparison is not a strict equality check.
- */
- is = function(test, expected, message) {
- testrun.count++;
-
- var result;
- try {
- result = eval(test);
-
- if (result == expected) {
- testrun.passes++
- testrun.report(" OK "+testrun.count+" - "+((message != null)? message : ""));
- }
- else {
- testrun.fails++
- testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
- testrun.report("expected: "+expected);
- testrun.report(" got: "+result);
- }
- }
- catch(e) {
- testrun.fails++
- testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
- testrun.report("expected: "+expected);
- testrun.report(" got: "+result);}
- }
- /**
- Check if test matches pattern.
- @param {string} test To be evaluated.
- @param {string} pattern Used to create a RegExp.
- @param {string} message Optional. To be displayed in the report.
- @return {boolean} True if test matches pattern.
- */
- like = function(test, pattern, message) {
- testrun.count++;
- var result;
- try {
- result = eval(test);
- var rgx = new RegExp(pattern);
-
- if (rgx.test(result)) {
- testrun.passes++
- testrun.report(" OK "+testrun.count+" - "+((message != null)? message : ""));
- }
- else {
- testrun.fails++
- testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
- testrun.report(" this: "+result);
- testrun.report("is not like: "+pattern);
- }
- }
- catch(e) {
- testrun.fails++
- testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
- }
- }