logging test now checks to make sure arg_levels is correct
[scpubgit/Object-Remote.git] / t / logging.t
1 use strictures 1;
2 use Test::More;
3
4 $ENV{OBJECT_REMOTE_TEST_LOGGER} = 1;
5
6 BEGIN {
7   use Object::Remote::Logging qw( :log :dlog router arg_levels );
8   is($Object::Remote::Logging::DID_INIT, 1, 'using logging class initializes it');
9 }
10
11 my $router = router();
12 isa_ok($router, 'Object::Remote::Logging::Router');
13 is($router, router(), 'Router object is a singleton');
14
15 my $levels = arg_levels();
16 is(ref($levels), 'ARRAY', 'arg_levels returns array reference');
17 is_deeply(
18   $levels, [qw( trace debug verbose info warn error fatal )],
19   'arg_levels has correct names'
20 );
21
22 #adds some noise into the string that's not significant just to be more thorough
23 my $selections_string = "Acme::Matt::Daemon \t  *\t\t-Acme::POE::Knee";
24 my %parsed_selections = Object::Remote::Logging::_parse_selections($selections_string);
25 my $selections_match = { '*' => 1, 'Acme::Matt::Daemon' => 1, 'Acme::POE::Knee' => 0 };
26 is_deeply(\%parsed_selections, $selections_match, 'Selections parsed successfully' );
27
28 require 't/lib/ORFeedbackLogger.pm';
29 my $logger = ORFeedbackLogger->new(level_names => $levels, min_level => 'trace');
30 isa_ok($logger, 'ORFeedbackLogger');
31 $router->connect($logger);
32
33 $logger->reset;
34 log_info { "The quick brown fox jumped" };
35 is($logger->feedback_output, "info: The quick brown fox jumped\n", 'log_info works');
36
37 $logger->reset;
38 Dlog_verbose { "over the lazy dog's $_" } 'back';
39 is($logger->feedback_output, "verbose: over the lazy dog's \"back\"\n", 'Dlog_verbose works');
40
41 done_testing;