# 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..7\n"; }
END {print "not ok 1\n" unless $loaded;}
use P4::Journal;
$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):
################################################################################
package MyJournal;
use strict;
use vars qw( @ISA );
@ISA = qw( P4::Journal );
sub new
{
my $class = shift;
my $self = new P4::Journal( @_ );
bless( $self, $class );
$self->{'Records'} = 0;
$self->{'TestNo' } = 0;
return $self;
}
sub Count()
{
my $self = shift;
$self->{'Records'};
}
sub Reset()
{
my $self = shift;
$self->{'Records'} = 0;
}
sub UpdateProgress
{
return;
}
sub ParseRecord
{
my $self = shift;
my $rec = shift;
my $table = $rec->Table();
$self->{'Records'}++;
if ( $self->{ 'TestNo' } == 0 )
{
if ( $table eq "db.counters" )
{
my $name = $rec->Name();
my $value = $rec->Value();
print( ( $name eq "change" && $value == 1 ) ?
"ok 3\n" :
"not ok 3\n" );
$self->{ 'TestNo' }++;
}
}
elsif ( $self->{ 'TestNo' } == 1 )
{
if ( $table eq "db.user" )
{
my $user = $rec->User();
print( $user eq "tony" ? "ok 4\n" : "not ok 4\n" );
$self->{ 'TestNo' }++;
}
}
elsif ( $self->{ 'TestNo' } == 2 )
{
if ( $table eq "db.change" )
{
my $change = $rec->Change();
$change++;
$rec->Change( $change );
print( $rec->Change() == $change ? "ok 5\n" : "not ok 5\n" );
$self->{ 'TestNo' }++;
}
}
elsif ( $self->{ 'TestNo' } == 3 )
{
my $oldop = $rec->Operation();
$rec->Operation( "xx" );
print ( $rec->Operation() == "xx" ? "ok 6\n" : "not ok 6\n" );
$rec->Operation( $oldop );
}
}
package main;
# Some basic sanity tests
# Can we instantiate objects?
my $journal = new MyJournal("test.jnl");
print( defined($journal) ? "ok 2\n" : "not ok 2\n");
# Can we parse files?
$journal->Parse();
print( $journal->Count() == 23 ? "ok 7\n" : "not ok 7\n");