Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

124 lines (109 sloc) 3.745 kb
#!/usr/bin/perl -w
use strict;
use SDL;
BEGIN {
use Test::More;
use lib 't/lib';
use SDL::TestTool;
use Config;
plan( skip_all => 'GNU Hurd <= 0.3 not supported' )
if $^O eq 'gnu' && $Config{osvers} <= 0.3;
plan( skip_all => 'Failed to init cdrom' )
unless SDL::TestTool->init(SDL_INIT_CDROM);
}
use SDL::CD;
use SDL::CDROM;
use SDL::CDTrack;
is( CD_ERROR, -1, 'CD_ERROR should be imported' );
is( CD_ERROR(), -1, 'CD_ERROR() should also be available' );
is( CD_PAUSED, 3, 'CD_PAUSED should be imported' );
is( CD_PAUSED(), 3, 'CD_PAUSED() should also be available' );
is( CD_PLAYING, 2, 'CD_PLAYING should be imported' );
is( CD_PLAYING(), 2, 'CD_PLAYING() should also be available' );
is( CD_STOPPED, 1, 'CD_STOPPED should be imported' );
is( CD_STOPPED(), 1, 'CD_STOPPED() should also be available' );
is( CD_TRAYEMPTY, 0, 'CD_TRAYEMPTY should be imported' );
is( CD_TRAYEMPTY(), 0, 'CD_TRAYEMPTY() should also be available' );
is( SDL_AUDIO_TRACK, 0, 'SDL_AUDIO_TRACK should be imported' );
is( SDL_AUDIO_TRACK(), 0, 'SDL_AUDIO_TRACK() should also be available' );
is( SDL_DATA_TRACK, 4, 'SDL_DATA_TRACK should be imported' );
is( SDL_DATA_TRACK(), 4, 'SDL_DATA_TRACK() should also be available' );
my $num_drives = SDL::CDROM::num_drives();
ok( $num_drives >= 0, "[SDL::CDROM::num_drives] is $num_drives" );
SKIP:
{
skip( "no drives available or SDL_RELEASE_TESTING not set", 17 )
if $num_drives <= 0 || !$ENV{SDL_RELEASE_TESTING};
for ( 0 .. $num_drives - 1 ) {
my $name = SDL::CDROM::name($_);
ok( $name, "[SDL::CDROM::name] for drive $_ is $name" );
}
my $cd = SDL::CD->new(0);
isa_ok( $cd, 'SDL::CD', "[SDL::CD->new]" );
my $status = $cd->status();
my %states = (
-1 => 'CD_ERROR',
0 => 'CD_TRAYEMPTY',
1 => 'CD_STOPPED',
2 => 'CD_PLAYING',
3 => 'CD_PAUSED'
);
my %types = (
0 => 'SDL_AUDIO_TRACK',
1 => 'SDL_DATA_TRACK'
);
ok( defined $states{$status},
"[SDL::CD->status] is " . ( defined $states{$status} ? $states{$status} : 'undefined' )
);
SKIP:
{
skip( "CD should be in CD_STOPPED state", 14 )
unless $status == CD_STOPPED;
my $track = $cd->track(3);
isa_ok( $track, 'SDL::CDTrack', "[SDL::CD->track]" );
my $id = $cd->id();
ok( $id >= 0, "[SDL::CD->id] is $id" );
my $num_tracks = $cd->num_tracks();
ok( $num_tracks >= 0, "[SDL::CD->num_tracks] is $num_tracks" );
is( $cd->play_tracks( 4, 0, 5, 0 ),
0, "[SDL::CD->play_tracks] playing track 4"
);
SDL::delay(2000);
is( $cd->pause(), 0, "[SDL::CD->pause] succeeded" );
SDL::delay(2000);
SKIP:
{
skip( "I have no idea why cur_track and cur_frame are 0.", 2 );
is( $cd->cur_track(), 4, "[SDL::CD->cur_track] is 4" );
my $frame = $cd->cur_frame();
ok( $frame, "[SDL::CD->cur_frame] is $frame" );
}
my $t_id = $track->id();
ok( $t_id, "[SDL::CDTrack->id] is $t_id" );
my $t_type = $track->type();
ok( defined $types{$t_type},
"[SDL::CDTrack->type] is " . ( defined $types{$t_type} ? $types{$t_type} : 'undefined' )
);
my $t_length = $track->length();
ok( $t_length > 0, "[SDL::CDTrack->length] is $t_length" );
my $t_offset = $track->offset();
ok( $t_offset > 0, "[SDL::CDTrack->offset] is $t_offset" );
is( $cd->resume(), 0, "[SDL::CD->resume] succeeded" );
SDL::delay(2000);
is( $cd->stop(), 0, "[SDL::CD->stop] succeeded" );
SDL::delay(2000);
is( $cd->play( CD_FPS * 30, CD_FPS * 2 ),
0, "[SDL::CD->play] succeeded"
);
SDL::delay(2000);
}
SKIP:
{
skip( "CD should be in CD_STOPPED or CD_TRAYEMPTY state", 1 )
unless $status == CD_STOPPED || $status == CD_TRAYEMPTY;
is( $cd->eject(), 0, "[SDL::CD->eject] succeeded" )
unless SDL::delay(2000);
}
}
done_testing;
sleep(1);
Jump to Line
Something went wrong with that request. Please try again.