#include "testUtils.h" using namespace irr; using namespace core; // Test the functionality of the Irrlicht timer bool testTimer(void) { bool success = true; IrrlichtDevice* device = createDevice(video::EDT_NULL); if (!device) return false; logTestString("Testing virtual timer.\n"); ITimer* timer = device->getTimer(); // must be running at start success &= !timer->isStopped(); // starting more often should not stop the timer timer->start(); success &= !timer->isStopped(); // one stop should not stop the timer because it's started twice now timer->stop(); success &= !timer->isStopped(); // another stop should really stop it timer->stop(); success &= timer->isStopped(); // third stop - timer should still be stopped timer->stop(); success &= timer->isStopped(); // should not start yet timer->start(); success &= timer->isStopped(); // start again timer->start(); success &= !timer->isStopped(); logTestString("Testing virtual timer done. %s\n", success?"Success":"Failure"); logTestString("Testing real timer.\n"); const u32 startVirtual = timer->getTime(); const u32 startReal = timer->getRealTime(); device->sleep(2); if (startReal != timer->getRealTime()) logTestString("Warning: Real timer did not progress. Maybe the time slices are too coarse to see.\n"); if (startVirtual != timer->getTime()) logTestString("Warning: Virtual timer did not progress. Maybe the time slices are too coarse to see.\n"); irr::ITimer::RealTimeDate date = timer->getRealTimeAndDate(); logTestString("Real time and date. %d.%d.%d at %d:%d:%d\n", date.Day, date.Month, date.Year, date.Hour, date.Minute, date.Second); logTestString("This is day %d of the year and weekday %d. The current time zone has daylight saving %s\n", date.Yearday, date.Weekday, date.IsDST?"enabled":"disabled"); device->closeDevice(); device->run(); device->drop(); return success; }