converted to use Test::More
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8537 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
5df78f830d
commit
0962fd32d9
1 changed files with 84 additions and 190 deletions
|
|
@ -1,8 +1,17 @@
|
|||
#!/usr/bin/perl -w
|
||||
use overload_simple;
|
||||
use vars qw/$DOWARN/;
|
||||
use strict;
|
||||
use Test::More tests => 71;
|
||||
|
||||
$f = new overload_simple::Foo();
|
||||
$b = new overload_simple::Bar();
|
||||
$v = overload_simple::malloc_void(32);
|
||||
pass("loaded");
|
||||
|
||||
my $f = new overload_simple::Foo();
|
||||
isa_ok($f, "overload_simple::Foo");
|
||||
my $b = new overload_simple::Bar();
|
||||
isa_ok($b, "overload_simple::Bar");
|
||||
my $v = overload_simple::malloc_void(32);
|
||||
isa_ok($v, "_p_void");
|
||||
|
||||
|
||||
#
|
||||
|
|
@ -13,24 +22,16 @@ BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
|
|||
#these tests should 'fail'
|
||||
#
|
||||
eval { overload_simple::fint("l") };
|
||||
if (!$@) {
|
||||
die("fint(int)");
|
||||
}
|
||||
ok($@, "fint(int) - int");
|
||||
|
||||
eval { overload_simple::fint("3.5") };
|
||||
if (!$@) {
|
||||
die("fint(int)");
|
||||
}
|
||||
ok($@, "fint(int) - double");
|
||||
|
||||
eval { overload_simple::fdouble("l") };
|
||||
if (!$@) {
|
||||
die("fdouble(double)");
|
||||
}
|
||||
ok($@, "fint(double) - int");
|
||||
|
||||
eval { overload_simple::fdouble("1.5/2.0") };
|
||||
if (!$@) {
|
||||
die("fdouble(double)");
|
||||
}
|
||||
ok($@, "fint(double) - double");
|
||||
|
||||
#
|
||||
#enable the warnings again
|
||||
|
|
@ -41,257 +42,150 @@ $DOWARN =1;
|
|||
# 'simple' dispatch (no overload) of int and double arguments
|
||||
#
|
||||
|
||||
if (!(overload_simple::fint(3) eq "fint:int")) {
|
||||
die("fint(int)");
|
||||
}
|
||||
is(overload_simple::fint(3), "fint:int", "fint(int) - int");
|
||||
|
||||
if (!(overload_simple::fint("1") eq "fint:int")) {
|
||||
die("fint(int)");
|
||||
}
|
||||
is(overload_simple::fint("1"), "fint:int", "fint(int) - string int");
|
||||
|
||||
if (!(overload_simple::fint(3.0) eq "fint:int")) {
|
||||
die("fint(int)");
|
||||
}
|
||||
is(overload_simple::fint(3.0), "fint:int", "fint(int) - double");
|
||||
|
||||
if (!(overload_simple::fint("3.0") eq "fint:int")) {
|
||||
die("fint(int)");
|
||||
}
|
||||
is(overload_simple::fint("3.0"), "fint:int", "fint(int) - string double");
|
||||
|
||||
# old bad case that now works
|
||||
$n = 3;
|
||||
my $n = 3;
|
||||
$n = $n + 1;
|
||||
if (!(overload_simple::fint($n) eq "fint:int")) {
|
||||
die("fint(int)");
|
||||
}
|
||||
is(overload_simple::fint($n), "fint:int", "fint(int) - int var");
|
||||
|
||||
if (!(overload_simple::fint(4/2) eq "fint:int")) {
|
||||
die("fint(int)");
|
||||
}
|
||||
is(overload_simple::fint(4/2), "fint:int", "fint(int) - divide int denom");
|
||||
|
||||
if (!(overload_simple::fint(4/2.0) eq "fint:int")) {
|
||||
die("fint(int)");
|
||||
}
|
||||
is(overload_simple::fint(4/2.0), "fint:int", "fint(int) - divide double denom");
|
||||
|
||||
if (!(overload_simple::fdouble(3) eq "fdouble:double")) {
|
||||
die("fdouble(double)");
|
||||
}
|
||||
is(overload_simple::fdouble(3), "fdouble:double", "fdouble(double) - int");
|
||||
|
||||
if (!(overload_simple::fdouble("3") eq "fdouble:double")) {
|
||||
die("fdouble(double)");
|
||||
}
|
||||
is(overload_simple::fdouble("3"), "fdouble:double", "fdouble(double) - string int");
|
||||
|
||||
if (!(overload_simple::fdouble(3.0) eq "fdouble:double")) {
|
||||
die("fdouble(double)");
|
||||
}
|
||||
is(overload_simple::fdouble(3.0), "fdouble:double", "fdouble(double) - double");
|
||||
|
||||
is(overload_simple::fdouble("3.0"), "fdouble:double", "fdouble(double) - string doubl");
|
||||
|
||||
if (!(overload_simple::fdouble("3.0") eq "fdouble:double")) {
|
||||
die("fdouble(double)");
|
||||
}
|
||||
#
|
||||
# Overload between int and double
|
||||
#
|
||||
if (!(overload_simple::num(3) eq "num:int")) {
|
||||
die("num(int)");
|
||||
}
|
||||
is(overload_simple::num(3), "num:int", "num(int) - int");
|
||||
|
||||
if (!(overload_simple::num("3") eq "num:int")) {
|
||||
die("num(int)");
|
||||
}
|
||||
is(overload_simple::num("3"), "num:int", "num(int) - string int");
|
||||
|
||||
if (!(overload_simple::num(3.0) eq "num:double")) {
|
||||
die("num(double)");
|
||||
}
|
||||
is(overload_simple::num(3.0), "num:double", "num(int) - double");
|
||||
|
||||
if (!(overload_simple::num("3.0") eq "num:double")) {
|
||||
die("num(double)");
|
||||
}
|
||||
is(overload_simple::num("3.0"), "num:double", "num(int) - string double");
|
||||
|
||||
#
|
||||
# Overload between int, double, char * and many types.
|
||||
#
|
||||
if (!(overload_simple::foo(3) eq "foo:int")) {
|
||||
die("foo(int)");
|
||||
}
|
||||
is(overload_simple::foo(3), "foo:int", "foo:int - int");
|
||||
|
||||
if (!(overload_simple::foo(3.0) eq "foo:double")) {
|
||||
die("foo(double)");
|
||||
}
|
||||
is(overload_simple::foo(3.0), "foo:double", "foo:double - double");
|
||||
|
||||
if (!(overload_simple::foo("3") eq "foo:char *")) {
|
||||
die("foo(char *)");
|
||||
}
|
||||
is(overload_simple::foo("3"), "foo:char *", "foo:char * - string int");
|
||||
|
||||
if (!(overload_simple::foo("3.0") eq "foo:char *")) {
|
||||
die("foo(char *)");
|
||||
}
|
||||
is(overload_simple::foo("3.0"), "foo:char *", "foo:char * - string double");
|
||||
|
||||
if (!(overload_simple::foo("hello") eq "foo:char *")) {
|
||||
die("foo(char *)");
|
||||
}
|
||||
is(overload_simple::foo("hello"), "foo:char *", "foo:char * string");
|
||||
|
||||
if (!(overload_simple::foo($f) eq "foo:Foo *")) {
|
||||
die("foo(Foo *)");
|
||||
}
|
||||
is(overload_simple::foo($f), "foo:Foo *", "foo:Foo *");
|
||||
|
||||
if (!(overload_simple::foo($b) eq "foo:Bar *")) {
|
||||
die("foo(Bar *)");
|
||||
}
|
||||
is(overload_simple::foo($b), "foo:Bar *", "foo:Bar *");
|
||||
|
||||
if (!(overload_simple::foo($v) eq "foo:void *")) {
|
||||
die("foo(void *)");
|
||||
}
|
||||
is(overload_simple::foo($v), "foo:void *", "foo:void *");
|
||||
|
||||
if (!(overload_simple::blah(3) eq "blah:double")) {
|
||||
die("blah(double)");
|
||||
}
|
||||
is(overload_simple::blah(3), "blah:double", "blah:double");
|
||||
|
||||
if (!(overload_simple::blah("hello") eq "blah:char *")) {
|
||||
die("blah(char *)");
|
||||
}
|
||||
is(overload_simple::blah("hello"), "blah:char *", "blah:char *");
|
||||
|
||||
$s = new overload_simple::Spam();
|
||||
my $s = new overload_simple::Spam();
|
||||
|
||||
if (!($s->foo(3) eq "foo:int")) {
|
||||
die("Spam::foo(int)");
|
||||
}
|
||||
is($s->foo(3), "foo:int", "Spam::foo:int");
|
||||
|
||||
if (!($s->foo(3.0) eq "foo:double")) {
|
||||
die("Spam::foo(double)");
|
||||
}
|
||||
is($s->foo(3.0), "foo:double", "Spam::foo(double)");
|
||||
|
||||
if (!($s->foo("hello") eq "foo:char *")) {
|
||||
$r = $s->foo("hello");
|
||||
print "res $r\n";
|
||||
die("Spam::foo(char *)");
|
||||
}
|
||||
is($s->foo("hello"), "foo:char *", "Spam::foo:char *");
|
||||
|
||||
if (!($s->foo($f) eq "foo:Foo *")) {
|
||||
die("Spam::foo(Foo *)");
|
||||
}
|
||||
is($s->foo($f), "foo:Foo *", "Spam::foo(Foo *)");
|
||||
|
||||
if (!($s->foo($b) eq "foo:Bar *")) {
|
||||
die("Spam::foo(Bar *)");
|
||||
}
|
||||
is($s->foo($b), "foo:Bar *", "Spam::foo(Bar *)");
|
||||
|
||||
if (!($s->foo($v) eq "foo:void *")) {
|
||||
die("Spam::foo(void *)");
|
||||
}
|
||||
is($s->foo($v), "foo:void *", "Spam::foo(void *)");
|
||||
|
||||
if (!(overload_simple::Spam::bar(3) eq "bar:int")) {
|
||||
die("Spam::bar(int)");
|
||||
}
|
||||
is(overload_simple::Spam::bar(3), "bar:int", "Spam::bar(int)");
|
||||
|
||||
if (!(overload_simple::Spam::bar(3.0) eq "bar:double")) {
|
||||
die("Spam::bar(double)");
|
||||
}
|
||||
is(overload_simple::Spam::bar(3.0), "bar:double", "Spam::bar(double)");
|
||||
|
||||
if (!(overload_simple::Spam::bar("hello") eq "bar:char *")) {
|
||||
die("Spam::bar(char *)");
|
||||
}
|
||||
is(overload_simple::Spam::bar("hello"), "bar:char *", "Spam::bar(char *)");
|
||||
|
||||
if (!(overload_simple::Spam::bar($f) eq "bar:Foo *")) {
|
||||
die("Spam::bar(Foo *)");
|
||||
}
|
||||
is(overload_simple::Spam::bar($f), "bar:Foo *", "Spam::bar(Foo *)");
|
||||
|
||||
if (!(overload_simple::Spam::bar($b) eq "bar:Bar *")) {
|
||||
die("Spam::bar(Bar *)");
|
||||
}
|
||||
is(overload_simple::Spam::bar($b), "bar:Bar *", "Spam::bar(Bar *)");
|
||||
|
||||
if (!(overload_simple::Spam::bar($v) eq "bar:void *")) {
|
||||
die("Spam::bar(void *)");
|
||||
}
|
||||
is(overload_simple::Spam::bar($v), "bar:void *", "Spam::bar(void *)");
|
||||
|
||||
# Test constructors
|
||||
|
||||
$s = new overload_simple::Spam();
|
||||
if (!($s->{type} eq "none")) {
|
||||
die("Spam()");
|
||||
}
|
||||
isa_ok($s, "overload_simple::Spam");
|
||||
|
||||
is($s->{type}, "none", "Spam()");
|
||||
|
||||
$s = new overload_simple::Spam(3);
|
||||
if (!($s->{type} eq "int")) {
|
||||
die("Spam(int)");
|
||||
}
|
||||
isa_ok($s, "overload_simple::Spam");
|
||||
|
||||
is($s->{type}, "int", "Spam(int)");
|
||||
|
||||
$s = new overload_simple::Spam(3.0);
|
||||
if (!($s->{type} eq "double")) {
|
||||
die("Spam(double)");
|
||||
}
|
||||
isa_ok($s, "overload_simple::Spam");
|
||||
is($s->{type}, "double", "Spam(double)");
|
||||
|
||||
$s = new overload_simple::Spam("hello");
|
||||
if (!($s->{type} eq "char *")) {
|
||||
die("Spam(char *)");
|
||||
}
|
||||
isa_ok($s, "overload_simple::Spam");
|
||||
is($s->{type}, "char *", "Spam(char *)");
|
||||
|
||||
$s = new overload_simple::Spam($f);
|
||||
if (!($s->{type} eq "Foo *")) {
|
||||
die("Spam(Foo *)");
|
||||
}
|
||||
isa_ok($s, "overload_simple::Spam");
|
||||
is($s->{type}, "Foo *", "Spam(Foo *)");
|
||||
|
||||
$s = new overload_simple::Spam($b);
|
||||
if (!($s->{type} eq "Bar *")) {
|
||||
die("Spam(Bar *)");
|
||||
}
|
||||
isa_ok($s, "overload_simple::Spam");
|
||||
is($s->{type}, "Bar *", "Spam(Bar *)");
|
||||
|
||||
$s = new overload_simple::Spam($v);
|
||||
if (!($s->{type} eq "void *")) {
|
||||
die("Spam(void *)");
|
||||
}
|
||||
isa_ok($s, "overload_simple::Spam");
|
||||
is($s->{type}, "void *", "Spam(void *)");
|
||||
|
||||
#
|
||||
# Combine dispatch
|
||||
#
|
||||
|
||||
|
||||
if (!(overload_simple::fid(3, 3.0) eq "fid:intdouble")) {
|
||||
die("fid(int,double)");
|
||||
}
|
||||
is(overload_simple::fid(3, 3.0), "fid:intdouble", "fid(int,double)");
|
||||
|
||||
if (!(overload_simple::fid(3.0, 3) eq "fid:doubleint")) {
|
||||
die("fid(double,int)");
|
||||
}
|
||||
is(overload_simple::fid(3.0, 3), "fid:doubleint", "fid(double,int)");
|
||||
|
||||
if (!(overload_simple::fid(3.0, 3.0) eq "fid:doubledouble")) {
|
||||
die("fid(double,double)");
|
||||
}
|
||||
is(overload_simple::fid(3.0, 3.0), "fid:doubledouble", "fid(double,double)");
|
||||
|
||||
if (!(overload_simple::fid(3, 3) eq "fid:intint")) {
|
||||
die("fid(int,int)");
|
||||
}
|
||||
is(overload_simple::fid(3, 3), "fid:intint", "fid(int,int)");
|
||||
|
||||
# with strings now
|
||||
|
||||
if (!(overload_simple::fid(3, "3.0") eq "fid:intdouble")) {
|
||||
die("fid(int,double)");
|
||||
}
|
||||
is(overload_simple::fid(3, "3.0"), "fid:intdouble", "fid(int,double)");
|
||||
|
||||
if (!(overload_simple::fid("3", 3.0) eq "fid:intdouble")) {
|
||||
die("fid(int,double)");
|
||||
}
|
||||
is(overload_simple::fid("3", 3.0), "fid:intdouble", "fid(int,double)");
|
||||
|
||||
if (!(overload_simple::fid("3", "3.0") eq "fid:intdouble")) {
|
||||
die("fid(int,double)");
|
||||
}
|
||||
is(overload_simple::fid("3", "3.0"), "fid:intdouble", "fid(int,double)");
|
||||
|
||||
if (!(overload_simple::fid(3.0, "3") eq "fid:doubleint")) {
|
||||
die("fid(double,int)");
|
||||
}
|
||||
is(overload_simple::fid(3.0, "3"), "fid:doubleint", "fid(double,int)");
|
||||
|
||||
if (!(overload_simple::fid("3.0", "3.0") eq "fid:doubledouble")) {
|
||||
$r = overload_simple::fid("3.0", "3.0");
|
||||
print "$r \n";
|
||||
die("fid(double,double)");
|
||||
}
|
||||
is(overload_simple::fid("3.0", "3.0"), "fid:doubledouble", "fid:doubledouble");
|
||||
|
||||
if (!(overload_simple::fid("3", 3) eq "fid:intint")) {
|
||||
die("fid(int,int)");
|
||||
}
|
||||
is(overload_simple::fid("3", 3), "fid:intint", "fid:fid(int,int)");
|
||||
|
||||
isnt(overload_simple::fbool(0), overload_simple::fbool(1), "fbool(bool)");
|
||||
|
||||
if (!(overload_simple::fbool(0)) != overload_simple::fbool(1)) {
|
||||
die("fbool(bool)");
|
||||
}
|
||||
|
||||
if (2 != overload_simple::fbool(2)) {
|
||||
die("fbool(int)");
|
||||
}
|
||||
is(2, overload_simple::fbool(2), "fbool(int)");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue