1
2use strict;
3
4package OLObj;
5
6use overload
7    '0+' => \&numelic,
8    '""' => \&stringfy;
9
10sub new {
11    my ($class, $value) = @_;
12    bless \$value, $class;
13};
14
15sub numelic {
16    my $self = shift;
17    $$self;
18}
19
20sub stringfy {
21    my $self = shift;
22    qq!"$$self"!;
23}
24
25package Foo;
26
27sub new {
28    my ($class, $value) = @_;
29    bless \$value, $class;
30};
31
32package main;
33
34use Test::More;
35
36BEGIN { use_ok 'Log::Minimal' }
37
38use Log::Minimal;
39
40local $ENV{LM_DEBUG} = 0;
41
42{
43    local $Log::Minimal::PRINT = sub { join(" ", @_) };
44    like( critf("crit%d", 1), qr/crit1/ );
45    like( warnf("warn"), qr/warn/ );
46    like( infof('in%fo'), qr/in%fo/ );
47    ok( !debugf("debug") );
48    local $ENV{LM_DEBUG} = 1;
49    like( debugf("debu\t\r\ng"), qr/debu\\t\\r\\ng/ );
50}
51
52{
53    local $Log::Minimal::PRINT = sub { join(" ", @_) };
54    like( critff("crit%d",1), qr/crit1/ );
55    like( warnff("warn"), qr/warn/ );
56    like( infoff('in%fo'), qr/in%fo/ );
57    ok( !debugff("debug") );
58    local $ENV{LM_DEBUG} = 1;
59    like( debugff("debu\t\r\ng"), qr/debu\\t\\r\\ng/ );
60}
61
62{
63    local $Log::Minimal::PRINT = sub { join(" ", @_) };
64    local $Log::Minimal::ESCAPE_WHITESPACE = 0;
65    like( critf("debu\t\r\ng"), qr/debu\t\r\ng/ );
66}
67
68use t::LogTest;
69
70{
71    local $Log::Minimal::PRINT = sub { join(" ", @_) };
72    like t::LogTest::logtest("crit%d",1), qr/LogTest\.pm/;
73
74    local $Log::Minimal::TRACE_LEVEL = $Log::Minimal::TRACE_LEVEL + 1;
75    unlike t::LogTest::logtest("crit%d",1), qr/LogTest\.pm/;
76}
77
78{
79    like( ddf(\"foo"), qr/\\'foo'/ );
80    like( ddf("foo\r\nbar"), qr/foo\r\nbar/ );
81    is( ddf({"a" => 1, "b" => 2}), "{'a' => 1,'b' => 2}" );
82
83
84    local $Log::Minimal::PRINT = sub { join(" ", @_) };
85    local $Log::Minimal::AUTODUMP = 1;
86    my $ol = OLObj->new("foo");
87    like( warnf("%s",$ol), qr/"foo"/);
88    like( warnf( $ol ), qr/"foo"/);
89    my $ol2 = OLObj->new(200);
90    like( warnf("%f",$ol2), qr/200\.00/);
91    my $foo = Foo->new("foo");
92    like( warnf($foo), qr/bless.+foo.+Foo/);
93}
94
95
96{
97    local $Log::Minimal::PRINT = sub { join( "", @_) };
98    local $Log::Minimal::LOG_LEVEL = "MUTE";
99    ok( ! critf("crit") );
100
101    local $Log::Minimal::LOG_LEVEL = "CRITICAL";
102    ok( critf("crit") );
103    ok( ! warnf("warn") );
104
105    local $Log::Minimal::LOG_LEVEL = "WARN";
106    ok( critf("crit") );
107    ok( warnf("warn") );
108    ok( !debugf("debug") );
109
110    local $Log::Minimal::LOG_LEVEL = "INFO";
111    ok( critf("crit") );
112    ok( warnf("warn") );
113    ok( infof("info") );
114    ok( !debugf("debug") );
115
116    local $Log::Minimal::LOG_LEVEL = "DEBUG";
117    ok( !debugf("debug") );
118
119    local $ENV{LM_DEBUG} = 1;
120    ok( debugf("debug") );
121
122    local $Log::Minimal::LOG_LEVEL = "INFO";
123    ok( !debugf("debug") );
124
125    local $Log::Minimal::LOG_LEVEL = "DEBUG";
126    ok( debugf("debug") );
127
128    local $Log::Minimal::LOG_LEVEL = "MUTE";
129    ok( !debugf("debug") );
130}
131
132done_testing();
133
134