/t/core_timer.t

http://github.com/PerlGameDev/SDL · Perl · 66 lines · 51 code · 14 blank · 1 comment · 4 complexity · 91d4821cd3f261d191d4293e9560b468 MD5 · raw file

  1. #!/usr/bin/perl -w
  2. BEGIN { # http://wiki.cpantesters.org/wiki/CPANAuthorNotes
  3. use Config;
  4. if ( !$Config{'useithreads'} ) {
  5. print("1..0 # Skip: Perl not compiled with 'useithreads'\n");
  6. exit(0);
  7. }
  8. }
  9. use threads;
  10. use threads::shared;
  11. use strict;
  12. use warnings;
  13. use SDL;
  14. use Test::More;
  15. use SDL::Time;
  16. use Config;
  17. use lib 't/lib';
  18. use SDL::TestTool;
  19. if ( !SDL::TestTool->init(SDL_INIT_TIMER) ) {
  20. plan( skip_all => 'Failed to init timer' );
  21. } else {
  22. plan( tests => 6 );
  23. }
  24. my @done = qw/get_ticks
  25. delay/;
  26. my $before = SDL::get_ticks();
  27. like( $before, qr/^\d+$/, '[get_ticks] returns a number' );
  28. SDL::delay(250);
  29. my $after = SDL::get_ticks();
  30. like( $after, qr/^\d+$/, '[get_ticks] returns a number again' );
  31. my $diff = $after - $before;
  32. ok( $diff > 100 && $diff < 400, '[delay](250) delayed for ' . $diff . 'ms' );
  33. my $fired : shared = 0;
  34. sub fire { $fired++; return 100 }
  35. my $id = SDL::Time::add_timer( 101, 'main::fire' );
  36. sleep(2);
  37. is( SDL::Time::remove_timer($id), 1, "[remove_timer] removed $id timer" );
  38. isnt( $fired, 0, '[add_timer] ran ' . $fired );
  39. my @left = qw/set_timer new_timer_callback add_timer remove_timer/;
  40. my $why =
  41. '[Percentage Completion] '
  42. . int( 100 * ( $#done + 1 ) / ( $#done + $#left + 2 ) )
  43. . "\% implementation. "
  44. . ( $#done + 1 ) . " / "
  45. . ( $#done + $#left + 2 );
  46. TODO:
  47. {
  48. local $TODO = $why;
  49. pass "\nThe following functions:\n" . join ",", @left;
  50. }
  51. print "$why\n";
  52. sleep(2);