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;

# -------------------------------------------------------------------
# Library Modules

use lib qw(t/lib);
use File::Path;
use File::Slurp;
use Test::More tests => 22;

use TestObject;

# -------------------------------------------------------------------
# Variables

my $LOGFILE = 't/_TMPDIR/logging.log';
my $CONFIG  = 't/_DBDIR/logging.ini';

# -------------------------------------------------------------------
# Tests

unlink($LOGFILE) if(-f $LOGFILE);

SKIP: {
    skip "No supported databases available", 7  unless(-f $CONFIG);

    ok( my $obj = TestObject->load(config => $CONFIG), "got object" );

    is($obj->logfile, $LOGFILE, 'logfile default set');
    is($obj->logclean, 0, 'logclean default set');

    $obj->_log("Hello\n");
    $obj->_log("Goodbye\n");

    ok( -f $LOGFILE, '50logging.log created in current dir' );

    my @log = read_file($LOGFILE);
    chomp @log;

    is(scalar(@log),2, 'log written');
    like($log[0], qr!\d{4}/\d\d/\d\d \d\d:\d\d:\d\d: Hello!,   'line 1 of log');
    like($log[1], qr!\d{4}/\d\d/\d\d \d\d:\d\d:\d\d: Goodbye!, 'line 2 of log');
}


SKIP: {
    skip "No supported databases available", 8  unless(-f $CONFIG);

    ok( my $obj = TestObject->load(config => $CONFIG), "got object" );

    is($obj->logfile, $LOGFILE, 'logfile default set');
    is($obj->logclean, 0, 'logclean default set');

    $obj->_log("Back Again\n");

    ok( -f $LOGFILE, '50logging.log created in current dir' );

    my @log = read_file($LOGFILE);
    chomp @log;

    is(scalar(@log),3, 'log extended');
    like($log[0], qr!\d{4}/\d\d/\d\d \d\d:\d\d:\d\d: Hello!,      'line 1 of log');
    like($log[1], qr!\d{4}/\d\d/\d\d \d\d:\d\d:\d\d: Goodbye!,    'line 2 of log');
    like($log[2], qr!\d{4}/\d\d/\d\d \d\d:\d\d:\d\d: Back Again!, 'line 3 of log');
}

SKIP: {
    skip "No supported databases available", 7  unless(-f $CONFIG);

    ok( my $obj = TestObject->load(config => $CONFIG), "got object" );

    is($obj->logfile, $LOGFILE, 'logfile default set');
    is($obj->logclean, 0, 'logclean default set');
    $obj->logclean(1);
    is($obj->logclean, 1, 'logclean reset');

    $obj->_log("Start Again\n");

    ok( -f $LOGFILE, '50logging.log created in current dir' );

    my @log = read_file($LOGFILE);
    chomp @log;

    is(scalar(@log),1, 'log overwritten');
    like($log[0], qr!\d{4}/\d\d/\d\d \d\d:\d\d:\d\d: Start Again!, 'line 1 of log');
}

unlink($LOGFILE);