The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;
use PBS::Client;
use Test::More (tests => 4);

#-----------------------
# Test resources options
#-----------------------
{
    my $pbs = PBS::Client->new;
    my $job = PBS::Client::Job->new(
        partition => 'cluster01',
        queue     => 'queue01',
        nodes     => 2,
        ppn       => 1,
        cput      => '01:30:00',
        pcput     => '00:10:00',
        wallt     => '00:30:00',
        mem       => '600mb',
        pmem      => '200mb',
        vmem      => '1gb',
        pvmem     => '100mb',
        pri       => 10,
        nice      => 5,
        wd        => '.',
        cmd       => 'pwd',
    );
    
    $pbs->genScript($job);
    
    my $diff = &diff($job->{_tempScript}, "t/resources_1.sh");
    is($diff, 0, "resources options");
    unlink($job->{_tempScript});
}


#----------------------
# Test host
#----------------------
{
    my $pbs = PBS::Client->new;
    my $job = PBS::Client::Job->new(
        host => "node01.abc.com",
        wd   => '.',
        cmd  => 'pwd',
    );
    
    $pbs->genScript($job);
    
    my $diff = &diff($job->{_tempScript}, "t/resources_2.sh");
    is($diff, 0, "host");
    unlink($job->{_tempScript});
}


#----------------------
# Tests for begint
#----------------------
{
    my $pbs = PBS::Client->new;
    my $job = PBS::Client::Job->new(
        begint => "1145",
        wd     => '.',
        cmd    => 'pwd',
    );
    
    $pbs->genScript($job);
    
    my $diff = &diff($job->{_tempScript}, "t/resources_3.sh");
    is($diff, 0, "begint");
    unlink($job->{_tempScript});
}
{
    my $pbs = PBS::Client->new;
    my $job = PBS::Client::Job->new(
        begint => "14:48:33",
        wd     => '.',
        cmd    => 'pwd',
    );
    
    $pbs->genScript($job);
    
    my $diff = &diff($job->{_tempScript}, "t/resources_4.sh");
    is($diff, 0, "begint");
    unlink($job->{_tempScript});
}


#---------------------------------------------
# Compare two files
# - return 0 if two files are exactly the same
# - return 1 otherwise
#---------------------------------------------
sub diff
{
    my ($f1, $f2) = @_;
    open(F1, $f1);
    open(F2, $f2);
    my @c1 = <F1>;
    my @c2 = <F2>;
    close(F1);
    close(F2);
    return(0) if (join("", @c1) eq join("", @c2));
    return(1);
}