ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/TestClass.pm
(Generate patch)

Comparing COMP/SCRAM/src/Utilities/TestClass.pm (file contents):
Revision 1.1 by williamc, Thu Jun 24 14:46:14 1999 UTC vs.
Revision 1.4 by williamc, Wed Sep 1 09:15:58 1999 UTC

# Line 3 | Line 3
3   #
4   # Interface
5   # ---------
6 < # new($module,testdatadir,project) : module example - Utilities/urlhandler
6 > # new($module,testdatadir) : module example - Utilities/urlhandler
7   # dotest(@args) : Start testing - arguments dependent on inheriting class
8   #
9   # newtest() : Initiate a testing sequence
# Line 29 | Line 29 | sub new {
29          my $fullmodule=shift;
30          chomp $fullmodule;
31          my $datadir=shift;
32        my $project=shift;
32  
33          # The usual Object blessing
34          $self={};
# Line 38 | Line 37 | sub new {
37          #some local working variables
38          my $testmodule;
39          my $module;
40 <        my $dir;
41 <        if ( $fullmodule=~/\// ) {
42 <          ($dir=$fullmodule)=~s/(.*\/)(.*)/$1/;
43 <        }
40 >        my $dir="";
41 > #       if ( $fullmodule=~/\// ) {
42 > #         ($dir=$fullmodule)=~s/(.*\/)(.*)/$1/;
43 > #       }
44 >        if ( $fullmodule=~/::/ ) {
45 >          ($dir=$fullmodule)=~s/(.*::)(.*)/$1/;
46 >        }
47          else { $dir="" }
48 <        ($testmodule=$fullmodule)=~s/(.*\/)(.*)/$1test\/test_$2/;
49 <        ($testmodule=$fullmodule)=~s/${dir}(.*)/${dir}test\/test_$1/;
48 >        ($testmodule=$fullmodule)=~s/(.*\/)(.*)/$1test::test_$2/;
49 >        ($testmodule=$fullmodule)=~s/${dir}(.*)/${dir}test::test_$1/;
50          ($module=$testmodule)=~s/.*\///g;
51  
50        # Data Initialisation
51        $self->{project}=$project;
52          $self->{class}=$module;
53          $self->{"datadir"}=$datadir;
54          $self->{filenumber}=0;
55 +        $self->{temparea}="/tmp/SCRAMtest";
56 +        use File::Path;
57 +        mkpath ($self->{temparea},0, 0777);
58  
59          # Now setup a new testobject of the appropriate type
60 <        require $testmodule."\.pm";
60 >        eval "require $testmodule";
61 >        die $@ if $@;
62          $self->{testobj}=$module->_new($self, $fullmodule);
63  
64          return $self;
# Line 83 | Line 87 | sub newtest {
87          my $self=shift;
88          my $string=shift;
89          $self->{testnumber}++;
90 <        $self->_testout();
90 >        $self->_testout("");
91          $self->_testout("---------------------------* Test $self->{testnumber}".
92                                  " *------------------------------");
93          $self->_testout("|  $string ");
# Line 123 | Line 127 | sub verifydir {
127          my $name=shift;
128  
129          if ( -d "$name" ) {
130 <           $self->testpass();
130 >           $self->testpass("");
131          }
132          else {
133             $self->testfail("Directory $name does not exist");
# Line 196 | Line 200 | sub _new {
200  
201          # Data Initialisation
202          $self->{testclass}=$class;
203 <        $self->{classname}=$module;
203 >        ($self->{classname}=$module)=~s/::/\//g;
204          ($self->{class}=$module)=~s/.*\///g;
205          $self->{classfile}=$ENV{SCRAM_HOME}."/src/".$self->{classname}."\.pm";
202        $self->{testclassfile}=$path."/test/".$self->{testclass}."\.pm";
206          $self->init(@_);
207          $self->analyseInterface();
208          delete $self->{expect};
# Line 213 | Line 216 | sub testinterface {
216          my $self=shift;
217          my $subname=shift;
218          my $myreturn;
219 +        my $expected;
220  
221          $self->_checkdoc($subname);
222          $self->{inttest}{$subname}++;
223          $self->_testout(">Trying interface $subname ");
224          my $args=join ', ', @_;
225          $self->_testout( " (".$args.")" );
226 +        $num=0;
227          if ( exists $self->{expect} ) {
228 <          @myreturn=($self->{object}->$subname(@_));
229 <          if ( "@myreturn" eq $self->{expect} ) {
230 <            $self->testpass("OK - returned as expected");
231 <          }
232 <          else  {
233 <            $self->testfail("Expecting $self->{expect}, got @myreturn");
228 >         @mylist=eval { $self->{object}->$subname(@_); };
229 >          die "Test Failed $@\n" if $@;
230 >         if ( defined @mylist ) {
231 >         foreach $myreturn ( @mylist ) {
232 >          if ( ! defined $myreturn ) {
233 >                print "Undefined Value Passed Back\n";
234 >          }
235 >          elsif ( \$myreturn=~/HASH/ ) {
236 >             print "Hash Refreturned\n";
237 >          }
238 >          elsif ( \$myreturn=~/CODE/ ) {
239 >             print "Code Ref returned\n";
240            }
241 <          return @myreturn;
241 >          elsif ( \$myreturn=~/ARRAY/ ) {
242 >            print "Array Ref returned\n";
243 >          }
244 >          else {
245 >            $expected=$self->{expect}[$num++];
246 >            if ( $myreturn eq $expected ) { #simple return case
247 >             $self->testpass("OK - returned as expected ($expected)");
248 >            }
249 >            else  {
250 >              $self->testfail("Expecting $expected, got ".
251 >                                                $myreturn);
252 >            }
253 >          }
254 >        } # end foreach block
255 >        }
256 >          return @mylist;
257          }
258          else {
259            return ($self->{object}->$subname(@_));
# Line 241 | Line 267 | sub expect {
267          my $self=shift;
268          my $string=shift;
269  
270 <        $self->{expect}=$string;
270 >        push @{$self->{expect}}, $string;
271   }
272  
273   sub clearexpect {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines