* Added the AN/test.conf file needed for Tools.t and added testing for the new Get, Log and Validate methods (save for Get->switches or Log->entry as I am not sure how to test them yet).
cmp_ok($a2_count,'==',2,"Verifying that \$an->Storage->search_directories now has 2 entries from a passed in CSV, testing that the list changed and a fake directory was dropped.");
cmp_ok($a2_count,'==',2,"Verifying that Storage->search_directories now has 2 entries from a passed in CSV, testing that the list changed and a fake directory was dropped.");
cmp_ok($a3_count,'==',3,"Verifying that \$an->Storage->search_directories now has 3 entries from a passed in array reference, verifying that the list changed again.");
cmp_ok($a3_count,'==',3,"Verifying that Storage->search_directories now has 3 entries from a passed in array reference, verifying that the list changed again.");
cmp_ok($a4_count,'==',$a1_count,"Verifying that \$an->Storage->search_directories has the original number of directories: [$a4_count] after being called with an invalid 'directories' parameter, showing that it reset properly.");
cmp_ok($a4_count,'==',$a1_count,"Verifying that Storage->search_directories has the original number of directories: [$a4_count] after being called with an invalid 'directories' parameter, showing that it reset properly.");
is($bad_path,"#!not_found!#","Verifying that \$an->Storage->find properly returned '#!not_found!#' for a non-existed file.");
is($bad_path,"#!not_found!#","Verifying that Storage->find properly returned '#!not_found!#' for a non-existed file.");
# Config file read tests.
# Config file read tests.
$an->data->{foo}{bar}{a}="test";
$an->data->{foo}{bar}{a}="test";
is($an->Storage->read_config({file=>"AN/test.conf"}),0,"Verifying that '\$an->Storage->read_config' successfully found 'AN/test.conf'.");
is($an->Storage->read_config({file=>"AN/test.conf"}),0,"Verifying that 'Storage->read_config' successfully found 'AN/test.conf'.");
is($an->Storage->read_config({file=>""}),1,"Verifying that '\$an->Storage->read_config' returns '1' when called without a 'file' parameter being set.");
is($an->Storage->read_config({file=>""}),1,"Verifying that 'Storage->read_config' returns '1' when called without a 'file' parameter being set.");
is($an->Storage->read_config({file=>"AN/moo.conf"}),2,"Verifying that '\$an->Storage->read_config' returns '2' when the non-existent 'AN/moo.conf' is passed.");
is($an->Storage->read_config({file=>"AN/moo.conf"}),2,"Verifying that 'Storage->read_config' returns '2' when the non-existent 'AN/moo.conf' is passed.");
cmp_ok($an->data->{foo}{bar}{a},'eq','I am "a"',"Verifying that 'AN/test.conf's 'foo::bar::a' overwrote an earlier set value.");
cmp_ok($an->data->{foo}{bar}{a},'eq','I am "a"',"Verifying that 'AN/test.conf's 'foo::bar::a' overwrote an earlier set value.");
cmp_ok($an->data->{foo}{bar}{b},'eq','I am "b", split with tabs and having trailing spaces.',"Verifying that 'AN/test.conf's 'foo::bar::b' has whitespaces removed as expected.");
cmp_ok($an->data->{foo}{bar}{b},'eq','I am "b", split with tabs and having trailing spaces.',"Verifying that 'AN/test.conf's 'foo::bar::b' has whitespaces removed as expected.");
cmp_ok($an->data->{foo}{baz}{1},'eq','This is \'1\' with no spaces',"Verifying that 'AN/test.conf's 'foo::baz::1' parsed without spaces around '='.");
cmp_ok($an->data->{foo}{baz}{1},'eq','This is \'1\' with no spaces',"Verifying that 'AN/test.conf's 'foo::baz::1' parsed without spaces around '='.");
@ -72,15 +72,15 @@ cmp_ok($an->data->{foo}{baz}{2}, 'eq', 'I had a $dollar = sign and split with ta
### AN::Tools::Words methods
### AN::Tools::Words methods
# Make sure we can read words files
# Make sure we can read words files
is($an->Words->read({file=>$an->data->{path}{words}{'an-tools.xml'}}),0,"Verifying that '\$an->Words->read' properly returned '0' when asked to read the AN::Tools's words file.");
is($an->Words->read({file=>$an->data->{path}{words}{'an-tools.xml'}}),0,"Verifying that 'Words->read' properly returned '0' when asked to read the AN::Tools's words file.");
is($an->Words->read({file=>''}),1,"Verifying that '\$an->Words->read' properly returned '1' when asked to read a works file without a file being passed.");
is($an->Words->read({file=>''}),1,"Verifying that 'Words->read' properly returned '1' when asked to read a works file without a file being passed.");
is($an->Words->read({file=>'/tmp/dummy.xml'}),2,"Verifying that '\$an->Words->read' properly returned '2' when asked to read a non-existent file.");
is($an->Words->read({file=>'/tmp/dummy.xml'}),2,"Verifying that 'Words->read' properly returned '2' when asked to read a non-existent file.");
### NOTE: At this time, we don't test for unreadable files (rc = 3) or general read faults as set by XML::Simple (rc = 4).
### NOTE: At this time, we don't test for unreadable files (rc = 3) or general read faults as set by XML::Simple (rc = 4).
# Make sure we can read raw strings.
# Make sure we can read raw strings.
is($an->Words->key({key=>'t_0001'}),"Test replace: [#!variable!test!#].","Verifying that '\$an->Words->key' returned the Canadian English 't_0001' string.");
is($an->Words->key({key=>'t_0001'}),"Test replace: [#!variable!test!#].","Verifying that 'Words->key' returned the Canadian English 't_0001' string.");
is($an->Words->key({key=>'t_0001',language=>'jp'}),"テスト いれかえる: [#!variable!test!#]。","Verifying that '\$an->Words->read' returned the Japanese 't_0001' string.");
is($an->Words->key({key=>'t_0001',language=>'jp'}),"テスト いれかえる: [#!variable!test!#]。","Verifying that 'Words->read' returned the Japanese 't_0001' string.");
is($an->Words->key({key=>'t_0003',language=>'jp'}),"#!not_found!#","Verifying that '\$an->Words->read' returned '#!not_found!#' for the missing 't_0003' key.");
is($an->Words->key({key=>'t_0003',language=>'jp'}),"#!not_found!#","Verifying that 'Words->read' returned '#!not_found!#' for the missing 't_0003' key.");
like($an->Get->date_and_time({use_time=>1234567890}),qr/2009\/02\/1[34] \d\d:\d\d:\d\d$/,"Verified that a specific unixtime returned the expected date.");
like($an->Get->date_and_time({use_time=>1234567890}),qr/2009\/02\/1[34] \d\d:\d\d:\d\d$/,"Verified that a specific unixtime returned the expected date.");
like($an->Get->date_and_time({use_time=>1234567890,offset=>31536000}),qr/2010\/02\/1[34] \d\d:\d\d:\d\d$/,"Verified that a specific unixtime with a one year in the future offset returned the expected date.");
like($an->Get->date_and_time({use_time=>1234567890,offset=>31536000}),qr/2010\/02\/1[34] \d\d:\d\d:\d\d$/,"Verified that a specific unixtime with a one year in the future offset returned the expected date.");
like($an->Get->date_and_time({use_time=>1234567890,offset=>-31536000}),qr/2008\/02\/1[34] \d\d:\d\d:\d\d$/,"Verified that a specific unixtime with a one year in the past offset returned the expected date.");
like($an->Get->date_and_time({use_time=>1234567890,offset=>-31536000}),qr/2008\/02\/1[34] \d\d:\d\d:\d\d$/,"Verified that a specific unixtime with a one year in the past offset returned the expected date.");
### TODO: How to test Get->switches?
# my $time = time;
like($an->Get->host_uuid,qr/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/,"Verifying ability to read host uuid.");
is($an->Log->level,"2","Verifying the log level changed to '2'.");
$an->Log->level(3);
is($an->Log->level,"3","Verifying the log level changed to '3'.");
$an->Log->level(4);
is($an->Log->level,"4","Verifying the log level changed to '4'.");
$an->Log->level("foo");
is($an->Log->level,"4","Verifying the log level stayed at '4' with bad input.");
$an->Log->level(1);
is($an->Log->level,"1","Verifying the log level changed back to '1'.");
# We're simulating switches to test Log->_adjust_log_level
$an->data->{switches}{V}="#!set!#";
$an->data->{switches}{v}="";
$an->data->{switches}{vv}="";
$an->data->{switches}{vvv}="";
$an->data->{switches}{vvvv}="";
$an->Log->_adjust_log_level;
is($an->Log->level,"0","Verifying the log level was set to '0' with Log->_adjust_log_leve() with 'V' switch set.");
$an->data->{switches}{V}="";
$an->data->{switches}{v}="#!set!#";
$an->Log->_adjust_log_level;
is($an->Log->level,"1","Verifying the log level was set to '1' with Log->_adjust_log_leve() with 'v' switch set.");
$an->data->{switches}{v}="";
$an->data->{switches}{vv}="#!set!#";
$an->Log->_adjust_log_level;
is($an->Log->level,"2","Verifying the log level was set to '2' with Log->_adjust_log_leve() with 'vv' switch set.");
$an->data->{switches}{vv}="";
$an->data->{switches}{vvv}="#!set!#";
$an->Log->_adjust_log_level;
is($an->Log->level,"3","Verifying the log level was set to '3' with Log->_adjust_log_leve() with 'vvv' switch set.");
$an->data->{switches}{vvv}="";
$an->data->{switches}{vvvv}="#!set!#";
$an->Log->_adjust_log_level;
is($an->Log->level,"4","Verifying the log level was set to '4' with Log->_adjust_log_leve() with 'vvvv' switch set.");
$an->data->{switches}{vvvv}="";
$an->data->{switches}{v}="#!set!#";
$an->Log->_adjust_log_level;
is($an->Log->level,"1","Verifying the log level was set back to '1' with Log->_adjust_log_leve() with 'v' switch set.");
# Test Log->secure
is($an->Log->secure,"0","Verifying that logging secure messages is disabled by default.");
$an->Log->secure("foo");
is($an->Log->secure,"0","Verifying that logging secure messages stayed disabled on bad input.");
$an->Log->secure(1);
is($an->Log->secure,"1","Verifying that logging secure messages was enabled.");
$an->Log->secure(0);
is($an->Log->secure,"0","Verifying that logging secure messages was disabled again.");
### Template
my$active_skin=$an->Template->skin;
### Validate
is($an->Validate->is_uuid({uuid=>$an->Get->host_uuid}),"1","Verifying that Validate->is_uuid() validates the host UUID.");
is($an->Validate->is_uuid({uuid=>uc($an->Get->host_uuid)}),"0","Verifying that Validate->is_uuid() fails to validates the host UUID in upper case.");
is($an->Validate->is_uuid({uuid=>"cfdab37c-5b1a-433d-9285-978e7caa134"}),"0","Verifying that Validate->is_uuid() fails to validates a UUID missing a letter.");
is($an->Validate->is_uuid({uuid=>"cfdab37c5b1a433d9285-978e7caa1342"}),"0","Verifying that Validate->is_uuid() fails to validate a UUID without hyphens.");