#!/usr/bin/perl -w use strict; use warnings; use SDL; use SDL::Config; my $audiodriver; BEGIN { use Config; if ( !$Config{'useithreads'} ) { print("1..0 # Skip: Perl not compiled with 'useithreads'\n"); exit(0); } require threads; require threads::shared; use Test::More; use lib 't/lib'; use SDL::TestTool; $audiodriver = $ENV{SDL_AUDIODRIVER}; $ENV{SDL_AUDIODRIVER} = 'dummy' unless $ENV{SDL_RELEASE_TESTING}; if ( !SDL::TestTool->init(SDL_INIT_AUDIO) ) { plan( skip_all => 'Failed to init sound' ); } elsif ( !SDL::Config->has('SDL_mixer') ) { plan( skip_all => 'SDL_mixer support not compiled' ); } } use_ok( 'SDLx::Music', "Can load SDLx::Music" ); # Object Creation can_ok( 'SDLx::Music', 'new' ); my $music = SDLx::Music->new(); #my $music2 = SDLx::Music->new(); isa_ok( $music, "SDLx::Music" ); #isa_ok( $music2, "SDLx::Music" ); # Music Data defination can_ok( 'SDLx::Music', 'data' ); ## Simple ok( $music->data( silence => 'test/data/silence.wav' ) ); ## Long ok( $music->data( sample => { file => 'test/data/sample.wav', loops => 2, fade_in => 0.5, volume => 72 }, ) ); ## Check if stuff actually got loaded my $silence = $music->data('silence'); isa_ok( $silence, "SDLx::Music::Data" ); isa_ok( $music->data('sample'), "SDLx::Music::Data" ); is_deeply( $silence, $music->{data}->{silence}, "Silence is retreived correctly" ); is_deeply( $music->data('sample'), $music->{data}->{sample}, "Sample is retreived correctly" ); # Chained changes can_ok( 'SDLx::Music', 'playing' ); $silence->volume(55)->loops(2)->file('test/data/silence.wav'); $music->play($silence); my $played; while ( $music->playing ) { $played = 1 unless $played; } is( $played, 1, "Music played and atleast one" ); isa_ok( $music->{data}->{silence}->{_content}, "SDL::Mixer::MixMusic", "Didn't load data for play" ); can_ok( 'SDLx::Music', 'load' ); $music->load; isa_ok( $music->{data}->{sample}->{_content}, "SDL::Mixer::MixMusic" ); $music->play( $music->data('sample') ); $played = 0; while ( $music->playing ) { $played = 1 unless $played; } is( $played, 1, "Music played and atleast one" ); is( $silence->{volume}, 55 ); # Clear the data can_ok( 'SDLx::Music', 'clear' ); ok( $music->clear ); ## Check if we are actually clear is( $music->{data}, undef, "Is clear" ); # Check default call can_ok( 'SDLx::Music', 'default' ); isa_ok( $music->default, "SDLx::Music::Default" ); $music->default->ext('.wav'); isa_ok( SDLx::Music->default, "SDLx::Music::Default" ); SDLx::Music->default->ext('.ogg'); is( $music->default->ext, '.wav' ); is( SDLx::Music->default->ext, '.ogg' ); if ($audiodriver) { $ENV{SDL_AUDIODRIVER} = $audiodriver; } else { delete $ENV{SDL_AUDIODRIVER}; } done_testing();