#!/usr/bin/perl -w
BEGIN
{
$| = 1;
unshift
@INC
,
'../blib/lib'
;
chdir
't'
if
-d
't'
;
plan
tests
=> 104;
use_ok(
'Mail::Graph'
);
}
my
$mg
= Mail::Graph->new(
input
=>
'.'
,
output
=>
'.'
, );
is (
ref
(
$mg
),
'Mail::Graph'
,
'Could construct object'
);
is (
$mg
->error()||
''
,
''
,
'without error'
);
can_ok (
'Mail::Graph'
,
qw/ error new generate/
);
my
(
$day
,
$month
,
$year
,
$dow
,
$hour
,
$minute
,
$second
,
$offset
) =
Mail::Graph->_parse_date(
''
);
is (
$day
,0); is (
$month
,0); is (
$year
,0); is (
$hour
,0);
is (
$minute
,0); is (
$second
,0); is (
$offset
,0);
(
$day
,
$month
,
$year
,
$dow
,
$hour
,
$minute
,
$second
,
$offset
) =
Mail::Graph->_parse_date(
'Tue Oct 27 18:38:52 1998'
);
is (
$day
,27); is (
$month
,10); is (
$year
,1998); is (
$hour
,18);
is (
$minute
,38); is (
$second
,52); is (
$offset
,0); is (
$dow
,2);
(
$day
,
$month
,
$year
,
$dow
,
$hour
,
$minute
,
$second
,
$offset
) =
Mail::Graph->_parse_date(
'Sun, 19 Jul 1998 23:49:16 +0200'
);
is (
$day
,19); is (
$month
,7); is (
$year
,1998); is (
$hour
,23);
is (
$minute
,49); is (
$second
,16); is (
$offset
,
'+0200'
); is (
$dow
,7);
my
$def
= {
input
=>
'archives'
,
output
=>
'spams'
,
items
=>
'spams'
,
height
=> 200,
template
=>
'index.tpl'
,
no_title
=> 0,
filter_domains
=> [ ],
filter_target
=> [ ],
average
=> 7,
average_daily
=> 14,
last_date
=>
undef
,
generate
=> {
month
=> 1,
yearly
=> 1,
day
=> 1,
daily
=> 1,
dow
=> 1,
monthly
=> 1,
hour
=> 1,
toplevel
=> 1,
rule
=> 1,
target
=> 1,
domain
=> 1,
last_x_days
=> 30,
score_histogram
=> 5,
score_scatter
=> 5,
score_daily
=> 60,
},
};
$mg
= Mail::Graph->new( );
foreach
(
keys
%$def
)
{
if
(!
ref
$def
->{
$_
})
{
print
"# Tried $_\n"
unless
is(
$mg
->{_options}->{
$_
},
$def
->{
$_
},
$_
);
}
}
$def
= {
input
=>
'.'
,
output
=>
'.'
,
items
=>
'mails'
,
height
=> 202,
template
=>
'index1.tpl'
,
no_title
=> 1,
filter_domains
=> [
'example.com'
],
filter_target
=> [
'example@example.com'
,
'sample'
, ],
average
=> 17,
average_daily
=> 24,
last_date
=>
'2002-08-2'
,
generate
=> {
month
=> 1,
yearly
=> 1,
day
=> 1,
daily
=> 1,
dow
=> 1,
monthly
=> 1,
hour
=> 1,
toplevel
=> 1,
rule
=> 1,
target
=> 1,
domain
=> 1,
last_x_days
=> 40,
},
};
$mg
= Mail::Graph->new(
$def
);
foreach
my
$k
(
keys
%$def
)
{
if
(!
ref
$def
->{
$k
})
{
is (
$mg
->{_options}->{
$k
},
$def
->{
$k
},
$k
);
}
}
my
$data
= {
'1/1/1900'
=> 10,
'2/1/1900'
=> 20,
'3/1/1900'
=> 30,
'4/1/1900'
=> 40,
'5/1/1900'
=> 50,
'6/1/1900'
=> 60,
'7/1/1900'
=> 70,
'8/1/1900'
=>
undef
,
'9/1/1900'
=> 10,
'10/1/1900'
=> 20,
'11/1/1900'
=> 30,
'12/1/1900'
=> 40,
'13/1/1900'
=> 50,
};
my
$result
= {
'1/1/1900'
=>
int
((10)/7),
'2/1/1900'
=>
int
((10+20)/7),
'3/1/1900'
=>
int
((10+20+30)/7),
'4/1/1900'
=>
int
((10+20+30+40)/7),
'5/1/1900'
=>
int
((10+20+30+40+50)/7),
'6/1/1900'
=>
int
((10+20+30+40+50+60)/7),
'7/1/1900'
=>
int
((10+20+30+40+50+60+70)/7),
'8/1/1900'
=>
int
((20+30+40+50+60+70+0)/7),
'9/1/1900'
=>
int
((30+40+50+60+70+0+10)/7),
'10/1/1900'
=>
int
((40+50+60+70+0+10+20)/7),
'11/1/1900'
=>
int
((50+60+70+0+10+20+30)/7),
'12/1/1900'
=>
int
((60+70+0+10+20+30+40)/7),
'13/1/1900'
=>
int
((70+0+10+20+30+40+50)/7),
};
my
$res
=
Mail::Graph::_average (
{
_options
=> {
average
=> 7,
generate
=> {
last_x_days
=> 30 }, },
},
$data
,
);
foreach
my
$k
(
keys
%$res
)
{
is (
$res
->{
$k
}->[1],
$result
->{
$k
},
$k
);
}
my
$month_table
= {
jan
=> 1,
feb
=> 2,
mar
=> 3,
apr
=> 4,
may
=> 5,
jun
=> 6,
jul
=> 7,
aug
=> 8,
sep
=> 9,
oct
=> 10,
nov
=> 11,
dec
=> 12 };
foreach
my
$m
(
keys
%$month_table
)
{
is (Mail::Graph::_month_to_num(
lc
(
$m
)),
$month_table
->{
$m
});
is (Mail::Graph::_month_to_num(
uc
(
$m
)),
$month_table
->{
$m
});
is (Mail::Graph::_month_to_num(
ucfirst
(
$m
)),
$month_table
->{
$m
});
}
my
$stats
= {
wahl
=> {
'red'
=> 38.5,
'black'
=> 38.5,
'green'
=> 8.6,
'yellow'
=> 7.4,
'darkred'
=> 4,
'purple-green-dotted'
=> 3,
} };
my
$percent
= {
'red'
=> 38.5,
'black'
=> 38.5,
'green'
=> 8.6,
'yellow'
=> 7.4,
'darkred'
=> 4,
'purple-green-dotted'
=> 3,
};
Mail::Graph->_add_percentage(
$stats
,
'wahl'
);
foreach
my
$key
(
keys
%{
$stats
->{wahl}})
{
is (
$stats
->{wahl}->{
$key
},
"$percent->{$key}, $percent->{$key}%"
,
$key
);
}