CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/12/17 11:12:10
Modified files: . : ChangeLog testsuite : MovieTester.cpp MovieTester.h testsuite/misc-ming.all: intervalTestRunner.cpp Log message: Use a predictable manual clock in MovieTester CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5191&r2=1.5192 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/MovieTester.cpp?cvsroot=gnash&r1=1.61&r2=1.62 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/MovieTester.h?cvsroot=gnash&r1=1.34&r2=1.35 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/intervalTestRunner.cpp?cvsroot=gnash&r1=1.10&r2=1.11 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5191 retrieving revision 1.5192 diff -u -b -r1.5191 -r1.5192 --- ChangeLog 17 Dec 2007 11:09:15 -0000 1.5191 +++ ChangeLog 17 Dec 2007 11:12:09 -0000 1.5192 @@ -1,5 +1,13 @@ 2007-12-17 Sandro Santilli <[EMAIL PROTECTED]> + * testsuite/MovieTester.{cpp,h}: use a manual clock, to make + time predictable. Expose an additional advanceClock method + to control it (one way) + * testsuite/misc-ming.all/intervalTestRunner.cpp: use advanceClock + instead of unpredictable usleep() calls. + +2007-12-17 Sandro Santilli <[EMAIL PROTECTED]> + * testsuite/actionscript.all/case.as: fix testcase, add test for .length. Index: testsuite/MovieTester.cpp =================================================================== RCS file: /sources/gnash/gnash/testsuite/MovieTester.cpp,v retrieving revision 1.61 retrieving revision 1.62 diff -u -b -r1.61 -r1.62 --- testsuite/MovieTester.cpp 7 Dec 2007 15:34:37 -0000 1.61 +++ testsuite/MovieTester.cpp 17 Dec 2007 11:12:09 -0000 1.62 @@ -57,8 +57,7 @@ MovieTester::MovieTester(const std::string& url) : - _forceRedraw(true), - _clock(new SystemClock()) // TODO: use a manual clock + _forceRedraw(true) { // Initialize gnash code lib @@ -89,7 +88,7 @@ // Initialize the sound handler(s) initTestingSoundHandlers(); - _movie_root = &(VM::init(*_movie_def, *_clock).getRoot()); + _movie_root = &(VM::init(*_movie_def, _clock).getRoot()); // Initialize viewport size with the one advertised in the header _width = unsigned(_movie_def->get_width_pixels()); @@ -203,8 +202,22 @@ } void -MovieTester::advance() +MovieTester::advanceClock(unsigned long ms) { + _clock.advance(ms); +} + +void +MovieTester::advance(bool updateClock) +{ + if ( updateClock ) + { + // TODO: cache 'clockAdvance' + float fps = _movie_def->get_frame_rate(); + unsigned long clockAdvance = long(1000/fps); + advanceClock(clockAdvance); + } + _movie_root->advance(1.0); render(); Index: testsuite/MovieTester.h =================================================================== RCS file: /sources/gnash/gnash/testsuite/MovieTester.h,v retrieving revision 1.34 retrieving revision 1.35 diff -u -b -r1.34 -r1.35 --- testsuite/MovieTester.h 7 Dec 2007 15:34:37 -0000 1.34 +++ testsuite/MovieTester.h 17 Dec 2007 11:12:09 -0000 1.35 @@ -107,7 +107,14 @@ MovieTester(const std::string& filespec); /// Advance the movie by one frame - void advance(); + // + /// @param updateClock + /// If true (the default), this method also + /// advances the clock by the nominal delay expected + /// between frame advancements before performing the + /// actual playhead advancement. + /// + void advance(bool updateClock=true); /// Advance the clock by the given amount of milliseconds void advanceClock(unsigned long ms); @@ -326,7 +333,8 @@ /// Virtual clock to use to let test runners /// control time flow - std::auto_ptr<VirtualClock> _clock; + ManualClock _clock; + //std::auto_ptr<VirtualClock> _clock; }; } // namespace gnash Index: testsuite/misc-ming.all/intervalTestRunner.cpp =================================================================== RCS file: /sources/gnash/gnash/testsuite/misc-ming.all/intervalTestRunner.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -b -r1.10 -r1.11 --- testsuite/misc-ming.all/intervalTestRunner.cpp 1 Dec 2007 00:15:01 -0000 1.10 +++ testsuite/misc-ming.all/intervalTestRunner.cpp 17 Dec 2007 11:12:09 -0000 1.11 @@ -53,6 +53,7 @@ check_equals(root->get_current_frame(), 0); check_equals(root->get_play_state(), sprite_instance::PLAY); + tester.advanceClock(50); // "sleep" 50 milliseconds tester.advance(); // execute actions in second frame frame check_equals(root->get_current_frame(), 1); @@ -66,49 +67,56 @@ root->get_member(st.find("that_counter"), &tmp); check_equals(tmp.to_number(), 0); - usleep(500000); tester.advance(); // run expired timers + tester.advanceClock(500); // "sleep" 500 milliseconds + tester.advance(); // run expired timers root->get_member(st.find("this_counter"), &tmp); check_equals(tmp.to_number(), 1); root->get_member(st.find("that_counter"), &tmp); check_equals(tmp.to_number(), 0); - usleep(500000); tester.advance(); // run expired timers + tester.advanceClock(600); // "sleep" 500 milliseconds + tester.advance(); // run expired timers root->get_member(st.find("this_counter"), &tmp); check_equals(tmp.to_number(), 2); root->get_member(st.find("that_counter"), &tmp); check_equals(tmp.to_number(), 1); - usleep(500000); tester.advance(); // run expired timers + tester.advanceClock(500); // "sleep" 500 milliseconds + tester.advance(); // run expired timers root->get_member(st.find("this_counter"), &tmp); check_equals(tmp.to_number(), 3); root->get_member(st.find("that_counter"), &tmp); check_equals(tmp.to_number(), 1); - usleep(500000); tester.advance(); // run expired timers + tester.advanceClock(520); // "sleep" 520 milliseconds + tester.advance(); // run expired timers root->get_member(st.find("this_counter"), &tmp); check_equals(tmp.to_number(), 4); root->get_member(st.find("that_counter"), &tmp); check_equals(tmp.to_number(), 2); - usleep(1000000); tester.advance(); // run expired timers + tester.advanceClock(1020); // "sleep" 1020 milliseconds + tester.advance(); // run expired timers root->get_member(st.find("this_counter"), &tmp); check_equals(tmp.to_number(), 4); root->get_member(st.find("that_counter"), &tmp); check_equals(tmp.to_number(), 3); - usleep(1000000); tester.advance(); // run expired timers + tester.advanceClock(1020); // "sleep" 1020 milliseconds + tester.advance(); // run expired timers root->get_member(st.find("this_counter"), &tmp); check_equals(tmp.to_number(), 4); root->get_member(st.find("that_counter"), &tmp); check_equals(tmp.to_number(), 4); - usleep(500000); tester.advance(); // run expired timers + tester.advanceClock(520); // "sleep" 520 milliseconds + tester.advance(); // run expired timers root->get_member(st.find("this_counter"), &tmp); check_equals(tmp.to_number(), 5); _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit