Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / t / 07_overload.t
diff --git a/deb-src/libwx-perl/libwx-perl-0.96/t/07_overload.t b/deb-src/libwx-perl/libwx-perl-0.96/t/07_overload.t
new file mode 100755 (executable)
index 0000000..5d32042
--- /dev/null
@@ -0,0 +1,113 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Wx;
+use lib './t';
+
+use Tests_Helper qw(test_app);
+use Test::More 'tests' => 110;
+
+my $undef = undef;
+
+my $app = test_app( sub { 1 } );
+
+for my $i ( [ \&Wx::_match, 'match' ],
+            [ \&Wx::_xsmatch, 'xsmatch' ] ) {
+  my( $m, $t ) = @$i;
+  local *xx = $m;
+
+  # some simple cases
+  ok(  xx( [ [] ], $Wx::_arr ), "$t: match an array" );
+  ok(  xx( [ [], 1 ], $Wx::_arr ),
+      "$t: more arguments than in prototype" );
+  ok( !xx( [ '' ], $Wx::_arr ), "$t: wrong arguments" );
+  ok(  xx( [ [] ], $Wx::_arr ), "$t: match with required arguments" );
+  ok( !xx( [ [], 1 ], $Wx::_arr, 1 ),
+      "$t: don't match with more than required" );
+  ok(  xx( [ [] ], $Wx::_arr, 1, 1 ),
+      "$t: match with required arguments and allow_more" );
+  ok(  xx( [ [], 1 ], $Wx::_arr, 1, 1 ),
+      "$t: match with more than required and allow_more" );
+
+  # tests for boolean
+  ok(  xx( [ [] ], $Wx::_b ), "$t: boolean matches reference" );
+  ok(  xx( [ 1 ],  $Wx::_b ), "$t: boolean matches integer" );
+  ok(  xx( [ 0 ],  $Wx::_b ), "$t: boolean matches zero" );
+  ok(  xx( [ undef ], $Wx::_b ), "$t: boolean matches literal undef" );
+  ok(  xx( [ $undef ], $Wx::_b ), "$t: boolean matches undefined variable" );
+  ok(  xx( [ 'foo' ], $Wx::_b ), "$t: boolean matches string" );
+
+  # test for string
+  ok(  xx( [ [] ], $Wx::_s ), "$t: string matches reference" );
+  ok(  xx( [ 1 ],  $Wx::_s ), "$t: string matches integer" );
+  ok(  xx( [ 0 ],  $Wx::_s ), "$t: string matches zero" );
+  ok(  xx( [ undef ], $Wx::_s ), "$t: string matches literal undef" );
+  ok(  xx( [ $undef ], $Wx::_s ), "$t: string matches undefined variable" );
+  ok(  xx( [ 'foo' ], $Wx::_s ), "$t: string matches string" );
+
+  # test for number
+  ok( !xx( [ [] ], $Wx::_n ), "$t: number does not match reference" );
+  ok(  xx( [ 1 ],  $Wx::_n ), "$t: number matches integer" );
+  ok(  xx( [ 0 ],  $Wx::_n ), "$t: number matches zero" );
+  ok(  xx( [ 1.2 ],  $Wx::_n ), "$t: number matches floating point" );
+  ok(  xx( [ 0.0 ],  $Wx::_n ), "$t: number matches floating point zero" );
+  ok( !xx( [ undef ], $Wx::_n ), "$t: number does not match literal undef" );
+  ok( !xx( [ $undef ], $Wx::_n ),
+      "$t: number does not match undefined variable" );
+  ok( !xx( [ 'foo' ], $Wx::_n ), "$t: number does not match string" );
+
+  # test Wx::Sizer
+  ok( !xx( [ [] ], $Wx::_wszr ),
+      "$t: Wx::Sizer does not match reference" );
+  ok( !xx( [ 1 ],  $Wx::_wszr ), "$t: Wx::Sizer does not match integer" );
+  ok( !xx( [ 0 ],  $Wx::_wszr ), "$t: Wx::Sizer does not match zero" );
+  ok(  xx( [ undef ], $Wx::_wszr ), "$t: Wx::Sizer matches literal undef" );
+  ok(  xx( [ $undef ], $Wx::_wszr ),
+       "$t: Wx::Sizer matches undefined variable" );
+  ok( !xx( [ 'foo' ], $Wx::_wszr ), "$t: Wx::Sizer does not match string" );
+  ok(  xx( [ Wx::BoxSizer->new( Wx::wxVERTICAL() ) ], $Wx::_wszr ),
+       "$t: Wx::Sizer matches Wx::Sizer" );
+
+  # test Wx::Image
+  ok( !xx( [ [] ], $Wx::_wimg ),
+      "$t: Wx::Image does not match reference" );
+  ok( !xx( [ 1 ],  $Wx::_wimg ), "$t: Wx::Image does not match integer" );
+  ok( !xx( [ 0 ],  $Wx::_wimg ), "$t: Wx::Image does not match zero" );
+  ok(  xx( [ undef ], $Wx::_wimg ), "$t: Wx::Image matches literal undef" );
+  ok(  xx( [ $undef ], $Wx::_wimg ),
+       "$t: Wx::Image matches undefined variable" );
+  ok( !xx( [ 'foo' ], $Wx::_wimg ), "$t: Wx::Image does not match string" );
+  ok(  xx( [ Wx::Image->new( 1, 2 ) ], $Wx::_wimg ),
+       "$t: Wx::Image matches Wx::Image" );
+
+  # test for Wx::Point/Wx::Size
+  ok(  xx( [ [] ], $Wx::_wpoi ),
+      "$t: Wx::Point matches ARRAY reference" );
+  ok( !xx( [ {} ], $Wx::_wpoi ),
+      "$t: Wx::Point does not match other reference" );
+  ok( !xx( [ 1 ],  $Wx::_wpoi ), "$t: Wx::Point does not match integer" );
+  ok( !xx( [ 0 ],  $Wx::_wpoi ), "$t: Wx::Point does not match zero" );
+  ok(  xx( [ $undef ], $Wx::_wpoi ),
+      "$t: Wx::Point matches undefined variable" );
+  ok( !xx( [ 'foo' ], $Wx::_wpoi ), "$t: Wx::Point does not match string" );
+  ok(  xx( [ Wx::Point->new( 1, 1 ) ], $Wx::_wpoi ),
+       "$t: Wx::Point matches Wx::Point" );
+  ok(  xx( [ Wx::Size->new( 1, 2 ) ], $Wx::_wsiz ),
+       "$t: Wx::Size matches Wx::Size" );
+
+  # test for Wx::Input/OutputStream
+  ok(  xx( [ [], 1 ], $Wx::_wist_n ),
+      "$t: Wx::InputStream matches references" );
+  ok(  xx( [ {}, 1 ], $Wx::_wist_n ),
+      "$t: Wx::InputStream matches references (again)" );
+  ok( !xx( [ 1, 1 ], $Wx::_wist_n ),
+      "$t: Wx::InputStream does not match integer" );
+  ok( !xx( [ 'foo', 1 ], $Wx::_wist_n ),
+      "$t: Wx::InputStream does not match string" );
+  ok(  xx( [ undef, 1 ], $Wx::_wist_n ),
+      "$t: Wx::InputStream matches undef" );
+  ok(  xx( [ *main::bar, 1 ], $Wx::_wist_n ),
+      "$t: Wx::InputStream matches typeglobs" );
+  *main::bar = *main::bar; # fool warning
+}
+