/t/mixer.t

http://github.com/PerlGameDev/SDL · Perl · 109 lines · 84 code · 19 blank · 6 comment · 7 complexity · 3b5790daa7f3f3d7d75bb6acfdf1164d MD5 · raw file

  1. #!/usr/bin/perl -w
  2. use strict;
  3. use warnings;
  4. use SDL;
  5. use SDL::Config;
  6. my $audiodriver;
  7. BEGIN {
  8. use Config;
  9. if ( !$Config{'useithreads'} ) {
  10. print("1..0 # Skip: Perl not compiled with 'useithreads'\n");
  11. exit(0);
  12. }
  13. use Test::More;
  14. use lib 't/lib';
  15. use SDL::TestTool;
  16. $audiodriver = $ENV{SDL_AUDIODRIVER};
  17. $ENV{SDL_AUDIODRIVER} = 'dummy' unless $ENV{SDL_RELEASE_TESTING};
  18. if ( !SDL::TestTool->init(SDL_INIT_AUDIO) ) {
  19. plan( skip_all => 'Failed to init sound' );
  20. } elsif ( !SDL::Config->has('SDL_mixer') ) {
  21. plan( skip_all => 'SDL_mixer support not compiled' );
  22. }
  23. } #SDL_init(SDL_INIT_AUDIO) + Version bootstrap conflict prevention in windows
  24. #
  25. # To reproduce this bug do
  26. #
  27. # use SDL; use SDL::Version; SDL::init(SDL_INIT_AUDIO);
  28. #
  29. use SDL::Mixer;
  30. use SDL::Version;
  31. my $v = SDL::Mixer::linked_version();
  32. isa_ok( $v, 'SDL::Version', '[linked_version]' );
  33. printf( "got version: %d.%d.%d\n", $v->major, $v->minor, $v->patch );
  34. is( MIX_DEFAULT_CHANNELS, 2, 'MIX_DEFAULT_CHANNELS should be imported' );
  35. is( MIX_DEFAULT_CHANNELS(), 2,
  36. 'MIX_DEFAULT_CHANNELS() should also be available'
  37. );
  38. is( MIX_DEFAULT_FORMAT, 32784, 'MIX_DEFAULT_FORMAT should be imported' );
  39. is( MIX_DEFAULT_FORMAT(), 32784,
  40. 'MIX_DEFAULT_FORMAT() should also be available'
  41. );
  42. is( MIX_DEFAULT_FREQUENCY, 22050, 'MIX_DEFAULT_FREQUENCY should be imported' );
  43. is( MIX_DEFAULT_FREQUENCY(), 22050,
  44. 'MIX_DEFAULT_FREQUENCY() should also be available'
  45. );
  46. is( MIX_FADING_IN, 2, 'MIX_FADING_IN should be imported' );
  47. is( MIX_FADING_IN(), 2, 'MIX_FADING_IN() should also be available' );
  48. is( MIX_FADING_OUT, 1, 'MIX_FADING_OUT should be imported' );
  49. is( MIX_FADING_OUT(), 1, 'MIX_FADING_OUT() should also be available' );
  50. is( MIX_MAX_VOLUME, 128, 'MIX_MAX_VOLUME should be imported' );
  51. is( MIX_MAX_VOLUME(), 128, 'MIX_MAX_VOLUME() should also be available' );
  52. is( MIX_NO_FADING, 0, 'MIX_NO_FADING should be imported' );
  53. is( MIX_NO_FADING(), 0, 'MIX_NO_FADING() should also be available' );
  54. SKIP:
  55. {
  56. skip( 'Version 1.2.10 needed', 1 ) if $v < 1.2.10;
  57. my @flags = ( MIX_INIT_MP3, MIX_INIT_MOD, MIX_INIT_FLAC, MIX_INIT_OGG );
  58. my @names = qw/MP3 MOD FLAC OGG/;
  59. foreach ( 0 ... 3 ) {
  60. my $f = $flags[$_];
  61. my $n = $names[$_];
  62. ( SDL::Mixer::init($f) != $f )
  63. ? print "Tried to init $n" . SDL::get_error() . "\n"
  64. : print "You have $n support\n";
  65. pass 'Init ran';
  66. }
  67. }
  68. is( SDL::Mixer::open_audio( 44100, SDL::Audio::AUDIO_S16SYS, 2, 4096 ),
  69. 0, '[open_audio] ran'
  70. );
  71. my $data = SDL::Mixer::query_spec();
  72. my ( $status, $freq, $format, $chan ) = @{$data};
  73. isnt( $status, 0, '[query_spec] ran' );
  74. isnt( $freq, 0, '[query_spec] got frequency ' . $freq );
  75. isnt( $format, 0, '[query_spec] got format ' );
  76. isnt( $chan, 0, '[query_spec] got channels ' . $chan );
  77. SDL::Mixer::close_audio();
  78. pass '[close_audio] ran';
  79. SKIP:
  80. {
  81. skip( 'Version 1.2.10 needed', 1 ) if $v < 1.2.10;
  82. SDL::Mixer::quit();
  83. pass '[quit] ran';
  84. }
  85. if ($audiodriver) {
  86. $ENV{SDL_AUDIODRIVER} = $audiodriver;
  87. } else {
  88. delete $ENV{SDL_AUDIODRIVER};
  89. }
  90. done_testing();