--- a/media/unit_testing/controller.js +++ b/media/unit_testing/controller.js @@ -1,1 +1,94 @@ +var giTotalTestCount = 0; +var giActiveModule = 0; +var giModuleTests; +var giStartTime; +var giTest; +var gbStop = false; +var gtoTest; +function fnTestStart ( sTestInfo ) +{ + gaoTest[ giActiveModule ].iTests++; + document.getElementById('test_info').innerHTML += + (giActiveModule+1)+'.'+(giModuleTests+1)+'. '+sTestInfo+'... '; + document.getElementById('test_number').innerHTML = giTotalTestCount+1; + giModuleTests++; + giTotalTestCount++; + + /* Set a timer to catch stalled script */ + gtoTest = setTimeout( function () { + fnMessage( 'WARNING - test script stalled. Likely a JS error' ); + gbStop = true; + }, 3000 ); +} + +function fnTestResult ( bResult ) +{ + clearTimeout( gtoTest ); + if ( bResult ) + { + fnMessage( 'Passed' ); + } + else + { + fnMessage( 'FAILED' ); + gbStop = true; + fnEnd( false ); + } +} + +function fnUnitStart( iTest ) +{ + if ( !gbStop ) + { + giModuleTests = 0; + window.parent.test_arena.location.href = + (iTest==0?"":"../")+'templates/'+gaoTest[iTest].sTemplate+'.php?scripts='+gaoTest[iTest].sTest; + giTest = iTest; + } +} + +function fnStartMessage( sMessage ) +{ + fnMessage( '
'+gaoTest[giTest].sGroup+' - '+sMessage+'' ); +} + +function fnMessage( sMessage ) +{ + var nInfo = document.getElementById('test_info'); + nInfo.innerHTML += sMessage+'
'; + nInfo.scrollTop = nInfo.scrollHeight; +} + +function fnUnitComplete() +{ + if ( giActiveModule < gaoTest.length - 1 ) + { + fnUnitStart( ++giActiveModule ); + } + else + { + fnEnd( true ); + } +} + +function fnEnd( bSuccess ) +{ + var iEndTime = new Date().getTime(); + var sTime = '
This test run took '+parseInt((iEndTime-giStartTime)/1000, 10)+ + ' second(s) to complete.'; + + if ( bSuccess ) + { + $('#test_running').html( 'Tests complete. '+giTotalTestCount+' tests were run.'+sTime ); + } + else + { + $('#test_running').html( 'Unit tests failed at test '+giTotalTestCount+'.'+sTime ); + } +} + +$(document).ready( function () { + giStartTime = new Date().getTime(); + fnUnitStart( giActiveModule ); +} );