X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fcore_video.t;h=3159925278d5015221f1855e3f28a0119f3f16f5;hb=8b7c3ac88365da7f48ecf38e313ccbb9db13161c;hp=5f2b5b9463981133c32de2c09922939bd9df4c94;hpb=df4106bf3adcc7bfc46a5ed0bc2464008b2ec490;p=sdlgit%2FSDL_perl.git diff --git a/t/core_video.t b/t/core_video.t index 5f2b5b9..3159925 100644 --- a/t/core_video.t +++ b/t/core_video.t @@ -1,31 +1,118 @@ #!/usr/bin/perl -w -BEGIN { - unshift @INC, 'blib/lib','blib/arch'; -} - use strict; use SDL; +use SDL::Color; +use SDL::Surface; use SDL::Config; - +use Devel::Peek; +use Data::Dumper; use Test::More; +use SDL::Rect; -plan ( tests => 2 ); +plan ( tests => 19 ); use_ok( 'SDL::Video' ); - -can_ok ('SDL::Video', qw/ + +my @done = + qw/ get_video_surface get_video_info video_driver_name list_modes - video_mode_ok set_video_mode + video_mode_ok update_rect update_rects flip set_colors set_palette set_gamma + /; + +can_ok ('SDL::Video', @done); + +#testing get_video_surface +SDL::Init(SDL_INIT_VIDEO); + +my $display = SDL::Video::set_video_mode(640,480,32, SDL_SWSURFACE ); + +if(!$display){ + plan skip_all => 'Couldn\'t set video mode: '. SDL::GetError(); + } + +#diag('Testing SDL::Video'); + +isa_ok(SDL::Video::get_video_surface(), 'SDL::Surface', '[get_video_surface] Checking if we get a surface ref back'); + +isa_ok(SDL::Video::get_video_info(), 'SDL::VideoInfo', '[get_video_info] Checking if we get videoinfo ref back'); + +my $driver_name = SDL::Video::video_driver_name(); + +pass '[video_driver_name] This is your driver name: '.$driver_name; + + + +is( ref( SDL::Video::list_modes( $display->format , SDL_SWSURFACE )), 'ARRAY', '[list_modes] Returned an ARRAY! '); + +cmp_ok(SDL::Video::video_mode_ok( 100, 100, 16, SDL_SWSURFACE), '>=', 0, "[video_mode_ok] Checking if an integer was return"); + +isa_ok(SDL::Video::set_video_mode( 100, 100 ,16, SDL_SWSURFACE), 'SDL::Surface', '[set_video_more] Checking if we get a surface ref back'); + + +#TODO: Write to surface and check inf pixel in that area got updated. + +SDL::Video::update_rect($display, 0, 0, 0, 0); + +#TODO: Write to surface and check inf pixel in that area got updated. +SDL::Video::update_rects($display, SDL::Rect->new(0, 10, 20, 20)); + +my $value = SDL::Video::flip($display); +is( ($value == 0) || ($value == -1), 1, '[flip] returns 0 or -1' ); + +$value = SDL::Video::set_colors($display, 0, SDL::Color->new(0,0,0)); +is( $value , 0, '[set_colors] returns 0 trying to write to 32 bit display' ); + +$value = SDL::Video::set_palette($display, SDL_LOGPAL|SDL_PHYSPAL, 0); + +is( $value , 0, '[set_palette] returns 0 trying to write to 32 bit surface' ); + +my @redtable = (0,0,0,0); + +SDL::Video::set_gamma_ramp( \@redtable , [0,1,2,3], [2,3,4,5]); pass '[set_gamma_ramp] ran'; + +SDL::Video::set_gamma( 1.0, 1.0, 1.0 ); pass '[set_gamma] ran '; + +my @b_w_colors; + +for(my $i=0;$i<256;$i++){ + $b_w_colors[$i] = SDL::Color->new($i,$i,$i); + } +my $hwdisplay = SDL::Video::set_video_mode(640,480,8, SDL_HWSURFACE ); + +if(!$hwdisplay){ + plan skip_all => 'Couldn\'t set video mode: '. SDL::GetError(); + } + +$value = SDL::Video::set_colors($hwdisplay, 0); +is( $value , 0, '[set_colors] returns 0 trying to send empty colors to 8 bit surface' ); + +$value = SDL::Video::set_palette($hwdisplay, SDL_LOGPAL|SDL_PHYSPAL, 0); + +is( $value , 0, '[set_palette] returns 0 trying to send empty colors to 8 bit surface' ); + + +$value = SDL::Video::set_colors($hwdisplay, 0, @b_w_colors); +is( $value , 1, '[set_colors] returns '.$value ); + +$value = SDL::Video::set_palette($hwdisplay, SDL_LOGPAL|SDL_PHYSPAL, 0, @b_w_colors ); + +is( $value , 1, '[set_palette] returns 1' ); + + + + + +my @left = qw/ get_gamma_ramp set_gmmma_ramp map_RGB @@ -52,10 +139,19 @@ can_ok ('SDL::Video', qw/ GL_set_attribute GL_swap_buffers GL_attr - create_YUV_overlay lock_YUV_overlay unlock_YUV_overlay display_YUV_overlay - free_YUV_overlay - /); + /; + +my $why = '[Percentage Completion] '.int( 100 * $#done / ($#done + $#left) ) ."\% implementation. $#done / ".($#done+$#left); + +TODO: +{ + local $TODO = $why; + pass "\nThe following functions:\n".join ",", @left; +} + diag $why; + +pass 'Are we still alive? Checking for segfaults';