/* * This file implements a subset of the QUnit functions/features to allow * running simple QUnit tests in Node.JS. * * Copyright (c) 2009 Borgar Þorsteinsson * Licensed under the terms of the MIT (LICENSE.txt) software license. * */ // the files to load for the test, test itself last: var files = [ 'dateutil.js', 'dateutil.testdates.js', 'dateutil.test.js' ]; /* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */ var sys = require('sys'), fs = require('fs'), Script = process.binding('evals').Script, assert = require('assert') ; var tests = []; var current_test; var sandbox = { expect: function ( num ) { current_test.expected = num; }, ok: function ( value, message ) { current_test.results.push([ !!value, message ]); }, equals: function ( rest, exp, msg ) { try { assert.equal(rest, exp); } catch ( err ) { current_test.results.push([ false, msg + ', expected: '+exp+' result: ' + rest ]); return; } current_test.results.push([ true, msg ]); }, same: function ( rest, exp, msg ) { try { assert.deepEqual(rest, exp); } catch ( err ) { current_test.results.push([ false, msg + ', expected: '+exp+' result: ' + rest ]); return; } current_test.results.push([ true, msg ]); }, test: function ( testName /*, expected, callback, async */ ) { var tmap = { 'object':'environment', 'boolean':'async', 'function':'callback', 'number':'expected' }; current_test = { name: testName, expected: null, callback: null, context: {}, async: false, // TODO: async doesn't actually do anything :-/ error: false, results: [] }; tests.push( current_test ); for (var i=1,l=arguments.length; i