-
Notifications
You must be signed in to change notification settings - Fork 28
/
mixer_samples.t
119 lines (97 loc) · 2.63 KB
/
mixer_samples.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/usr/bin/perl -w
use strict;
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);
}
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' );
}
} #SDL_init(SDL_INIT_AUDIO) + Version bootstrap conflict prevention in windows
#
# To reproduce this bug do
#
# use SDL; use SDL::Version; SDL::init(SDL_INIT_AUDIO);
use SDL::Mixer;
use SDL::Mixer::MixChunk;
use SDL::Mixer::Samples;
use SDL::Mixer::Channels;
use SDL::RWOps;
use SDL::Version;
my @done = qw/
get_num_chunk_decoders
get_chunk_decoder
load_WAV
volume_chunk
load_WAV_RW
/;
my @left = qw/
quick_load_WAV
quick_load_RAW
/;
my $can_open = SDL::Mixer::open_audio( 44100, SDL::Audio::AUDIO_S16SYS, 2, 4096 );
unless($can_open == 0)
{
plan( skip_all => 'Cannot open audio :'.SDL::get_error() );
}my $version = SDL::Mixer::linked_version();
printf(
"got version: %d.%d.%d\n",
$version->major, $version->minor, $version->patch
);
SKIP:
{
skip 'Need version 1.2.10', 2
unless ( $version->major >= 1
&& $version->minor >= 2
&& $version->patch >= 10 );
is( SDL::Mixer::Samples::get_num_chunk_decoders() >= 0,
1, '[get_num_chunk_decoders] passed'
);
my $stream = SDL::Mixer::Samples::get_chunk_decoder(0);
is( defined $stream, 1, "[get_chunk_decoder] found decoder $stream" );
}
my $sample_chunk = SDL::Mixer::Samples::load_WAV('test/data/sample.wav');
isa_ok( $sample_chunk, 'SDL::Mixer::MixChunk', '[load_WAV]' );
is( SDL::Mixer::Samples::volume_chunk( $sample_chunk, 120 ),
128, '[volume_chunk] was at max 128 volume on start'
);
is( SDL::Mixer::Samples::volume_chunk( $sample_chunk, 10 ),
120, '[volume_chunk] is now at 120 volume'
);
my $file = SDL::RWOps->new_file( 'test/data/sample.wav', 'r' );
isa_ok( $file, 'SDL::RWOps', '[new_file]' );
isa_ok(
SDL::Mixer::Samples::load_WAV_RW( $file, 0 ),
'SDL::Mixer::MixChunk', '[load_WAV_RW]'
);
my $why =
'[Percentage Completion] '
. int( 100 * ( $#done + 1 ) / ( $#done + $#left + 2 ) )
. "\% implementation. "
. ( $#done + 1 ) . " / "
. ( $#done + $#left + 2 );
TODO:
{
local $TODO = $why;
fail "Not Implmented SDL::Mixer::*::$_" foreach (@left);
}
print "$why\n";
pass 'Checking for segfaults';
if ($audiodriver) {
$ENV{SDL_AUDIODRIVER} = $audiodriver;
} else {
delete $ENV{SDL_AUDIODRIVER};
}
done_testing();