# $Source: /Users/clajac/cvsroot//Scripting/test.pl,v $ # $Author: clajac $ # $Date: 2003/07/21 10:10:05 $ # $Revision: 1.10 $ # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) BEGIN { $| = 1; print "1..1\n"; } END {print "not ok 1\n" unless $loaded;} use Scripting; $loaded = 1; print "ok 1\n"; ######################### End of black magic. # Insert your test code below (better if it prints "ok 13" # (correspondingly "not ok 13") depending on the success of chunk 13 # of the test code): my $warned = 0; $SIG{__WARN__} = sub { my $warn = shift; do {print "ok 2\n";},return if($warn =~ /Signature database not found/); do {print "ok 3\n";},return if($warn =~ /Failed to open signature database/); print "ok 4\n" unless $warned; $warned = 1; }; package Pkg1; use Scripting::Expose; sub new : Constructor { print "ok 5\n"; return bless { foo => 1 }, __PACKAGE__; } sub test : InstanceMethod { my ($self, $arg) = @_; print $self->isa("Pkg1") ? "ok 6\n" : "not ok 6\n"; print $arg eq "foo" ? "ok 7\n" : "not ok 7\n"; } package Pkg2; use Scripting::Expose; sub test_foo : ClassMethod(as => 'test') { my ($self, $arg) = @_; print $self->isa("Pkg2") ? "ok 8\n" : "not ok 8\n"; print $arg eq "bar" ? "ok 9\n" : "not ok 9\n"; } sub Pkg3; use Scripting::Expose; sub test_bar : Function(as => 'test') { my ($arg) = @_; print $arg eq "baz" ? "ok 10\n" : "not ok 10\n"; } package Pkg::Pkg4; use Scripting::Expose as => "Pkg4"; sub test : ClassMethod { my ($self, $arg) = @_; print $self->isa("Pkg::Pkg4") ? "ok 11\n" : "not ok 11\n"; print $arg eq "biz" ? "ok 12\n" : "not ok 12\n"; } package Pkg5; use Scripting::Expose to => 'Pkg5'; sub test : ClassMethod { my ($self, $arg) = @_; print $self->isa("Pkg5") ? "ok 13\n" : "not ok 13\n"; print $arg eq "foo" ? "ok 14\n" : "not ok 14\n"; } package main; use Scripting; Scripting->init( with => "scripts/", allow => 'js', signfile => 'test.sign_db' ); Scripting->invoke("Pkg1Event"); Scripting->invoke("Pkg2Event"); Scripting->invoke("Pkg3Event"); Scripting->invoke("Pkg4Event"); Scripting->invoke(Pkg5 => "Pkg5Event");