package testcases::Utils;
use strict;
use base qw(testcases::base);
sub test_logprint_handler {
my $self=shift;
use XAO::Utils;
my @log;
XAO::Utils::set_logprint_handler(sub {
push(@log,$_[0]);
});
my $olddebug=XAO::Utils::set_debug(1);
dprint "Test1";
eprint "Test2";
dprint "Test3","Test4","Test5";
$self->assert(@log == 3,
"Expected log to have 3 elements, has ".scalar(@log)." (".join(',',@log).")");
$self->assert($log[0] =~ /Test1/,
"Expected first element to match /Test1/, got '$log[0]'");
$self->assert($log[1] =~ /Test2/,
"Expected second element to match /Test2/, got '$log[1]'");
$self->assert($log[2] =~ /Test3Test4Test5/,
"Expected third element to match /Test3Test4Test5/, got '$log[2]'");
XAO::Utils::set_logprint_handler(undef);
XAO::Utils::set_debug($olddebug);
}
sub test_fround {
my $self=shift;
use XAO::Utils qw(:math);
my %matrix=(
t1 => {
num => 33.415,
prec => 100,
expect => 33.42,
},
t2 => {
num => 33.41499,
prec => 100,
expect => 33.41,
},
t3 => {
num => 2.5,
prec => 1,
expect => 3,
},
t4 => {
num => 3.5,
prec => 1,
expect => 4,
},
t5 => {
num => 3.99999,
prec => 1,
expect => 4,
},
t6 => {
num => 3,
prec => 1,
expect => 3,
},
t7 => {
num => -900.00,
prec => 100,
expect => -900,
},
t8 => {
num => -1.456,
prec => 100,
expect => -1.46,
},
t9 => {
num => -1.456,
prec => 10,
expect => -1.5,
},
);
foreach my $test_id (keys %matrix) {
my $num=$matrix{$test_id}->{num};
my $prec=$matrix{$test_id}->{prec};
my $got=fround($num,$prec);
my $expect=$matrix{$test_id}->{expect};
$self->assert($got == $expect,
"Wrong result for test $test_id (num=$num, prec=$prec, expect=$expect, got=$got)");
}
}
sub test_html {
my $self=shift;
use XAO::Utils qw(:html);
my $str;
my $got;
$str='\'"!@#$%^&*()_-=[]\<>?';
$got=t2ht($str);
$self->assert($got eq '\'"!@#$%^&*()_-=[]\<>?',
"Wrong value from t2ht ($got)");
$got=t2hq($str);
$self->assert($got eq '\'%22!@%23$%25^%26*()_-%3d[]\%3c%3e%3f',
"Wrong value from t2hq ($got)");
$got=t2hf($str);
$self->assert($got eq '\'"!@#$%^&*()_-=[]\<>?',
"Wrong value from t2hf ($got)");
}
sub test_args {
my $self=shift;
use XAO::Utils qw(:args);
my $args;
$args=get_args(a => 1, b => 2);
$self->assert($args->{a} == 1 && $args->{b} == 2,
"get_args - can't parse a hash");
$args=get_args([a => 2, b => 3]);
$self->assert($args->{a} == 2 && $args->{b} == 3,
"get_args - can't parse an 'arrayed' hash");
$args=get_args({a => 3, b => 4});
$self->assert($args->{a} == 3 && $args->{b} == 4,
"get_args - can't parse a hash reference");
my %a=(aa => 1, bb => '');
my %b=(bb => 2, cc => undef);
my %c=(cc => 3, dd => 3);
my $r=merge_refs(\%a,\%b,\%c);
$self->assert($a{aa} == 1 && $a{bb} eq '' &&
$b{bb} == 2 && !defined($b{cc}) &&
$c{cc} == 3 && $c{dd} == 3 &&
$r->{aa} == 1 && $r->{bb} == 2 &&
$r->{cc} == 3 && $r->{dd} == 3 &&
scalar(keys %$r) == 4,
"merge_refs doesn't work right");
}
sub test_keys {
my $self=shift;
use XAO::Utils qw(:keys);
for(1..1000) {
my $key=generate_key();
$self->assert($key && $key =~ /^[0-9A-Z]{8}/,
"Wrong key generated ($key)");
}
my $key=repair_key('01V34567');
$self->assert($key eq 'OIU3456I',
"repair_key returned wrong value for 01V34567 ($key)");
}
1;