rectest/scripts/RecTest.js

116 lines
2.3 KiB
JavaScript

/**
* Facade for the entire application
*/
rectest.RecTest = Class( 'RecTest',
{
/**
* jQuery instance
* @var {jQuery}
*/
'private _jQuery': null,
/**
* Supported test cases
* @var {Object}
*/
'private _cases': {},
/**
* Runs test configurations
* @var {TestRunner}
*/
'private _runner': null,
__construct: function( jquery, cases )
{
this._jQuery = jquery;
this._cases = cases;
this._runner = rectest.TestRunner(
jquery, rectest.set.SetFactory()
);
},
'public init': function()
{
// display js-dependent content
this._jQuery( '.hasjs' ).removeClass( 'hasjs' );
return this;
},
'public listCases': function( $select )
{
for ( var preset in this._cases )
{
var data = this._cases[ preset ];
$select.append( this._jQuery( '<option>' )
.attr( 'value', preset )
.text( data.title )
);
}
return this;
},
'public goConfig': function()
{
this._jQuery( 'body' )
.removeClass( 'pending' )
.removeClass( 'testing' )
;
return this;
},
'public goVerify': function()
{
this._jQuery( 'body' ).addClass( 'pending' );
return this;
},
'public run': function()
{
var _self = this,
$body = this._jQuery( 'body' ),
options = this._getOptions(),
testcase = this._cases[ options['case'] ].testCase();
$body.addClass( 'testing' ).removeClass( 'pending' );
this._runner.run( testcase, options, function( history )
{
_self.goConfig();
console.log( history );
console.log( 'done' );
} );
return this;
},
'private _getOptions': function()
{
var options = {},
values = [
'case', 'set', 'ralgo', 'interval', 'blank', 'samples', 'delay'
],
i = values.length;
while ( i-- )
{
var id = values[ i ];
options[ id ] = this._jQuery( '#' + id ).val();
}
return options;
}
} );