use strict;
package OLObj;
use overload
'0+' => \&numelic,
'""' => \&stringfy;
sub new {
my ($class, $value) = @_;
bless \$value, $class;
};
sub numelic {
my $self = shift;
$$self;
}
sub stringfy {
my $self = shift;
qq!"$$self"!;
}
package Foo;
sub new {
my ($class, $value) = @_;
bless \$value, $class;
};
package main;
use Test::More;
BEGIN { use_ok 'Log::Minimal' }
use Log::Minimal;
local $ENV{LM_DEBUG} = 0;
{
local $Log::Minimal::PRINT = sub { join(" ", @_) };
like( critf("crit%d", 1), qr/crit1/ );
like( warnf("warn"), qr/warn/ );
like( infof('in%fo'), qr/in%fo/ );
ok( !debugf("debug") );
local $ENV{LM_DEBUG} = 1;
like( debugf("debu\t\r\ng"), qr/debu\\t\\r\\ng/ );
}
{
local $Log::Minimal::PRINT = sub { join(" ", @_) };
like( critff("crit%d",1), qr/crit1/ );
like( warnff("warn"), qr/warn/ );
like( infoff('in%fo'), qr/in%fo/ );
ok( !debugff("debug") );
local $ENV{LM_DEBUG} = 1;
like( debugff("debu\t\r\ng"), qr/debu\\t\\r\\ng/ );
}
use t::LogTest;
{
local $Log::Minimal::PRINT = sub { join(" ", @_) };
like t::LogTest::logtest("crit%d",1), qr/LogTest\.pm/;
local $Log::Minimal::TRACE_LEVEL = $Log::Minimal::TRACE_LEVEL + 1;
unlike t::LogTest::logtest("crit%d",1), qr/LogTest\.pm/;
}
{
like( ddf(\"foo"), qr/\\'foo'/ );
like( ddf("foo\r\nbar"), qr/foo\r\nbar/ );
local $Log::Minimal::PRINT = sub { join(" ", @_) };
local $Log::Minimal::AUTODUMP = 1;
my $ol = OLObj->new("foo");
like( warnf("%s",$ol), qr/"foo"/);
like( warnf( $ol ), qr/"foo"/);
my $ol2 = OLObj->new(200);
like( warnf("%f",$ol2), qr/200\.00/);
my $foo = Foo->new("foo");
like( warnf($foo), qr/bless.+foo.+Foo/);
}
{
local $Log::Minimal::PRINT = sub { join( "", @_) };
local $Log::Minimal::LOG_LEVEL = "MUTE";
ok( ! critf("crit") );
local $Log::Minimal::LOG_LEVEL = "CRITICAL";
ok( critf("crit") );
ok( ! warnf("warn") );
local $Log::Minimal::LOG_LEVEL = "WARN";
ok( critf("crit") );
ok( warnf("warn") );
ok( !debugf("debug") );
local $Log::Minimal::LOG_LEVEL = "INFO";
ok( critf("crit") );
ok( warnf("warn") );
ok( infof("info") );
ok( !debugf("debug") );
local $Log::Minimal::LOG_LEVEL = "DEBUG";
ok( !debugf("debug") );
local $ENV{LM_DEBUG} = 1;
ok( debugf("debug") );
local $Log::Minimal::LOG_LEVEL = "INFO";
ok( !debugf("debug") );
local $Log::Minimal::LOG_LEVEL = "DEBUG";
ok( debugf("debug") );
local $Log::Minimal::LOG_LEVEL = "MUTE";
ok( !debugf("debug") );
}
done_testing();