#!/usr/bin/perl -I. -w
BEGIN { plan
tests
=> 8 };
my
@tests
= (
{
new
=> {
font
=>
'arial'
,
},
dat
=> [ [ 1..4 ], [6..9] ],
res
=> '<table>
<
tr
>
<td><font face=
"arial"
>1</font></td>
<td><font face=
"arial"
>2</font></td>
<td><font face=
"arial"
>3</font></td>
<td><font face=
"arial"
>4</font></td>
</
tr
>
<
tr
>
<td><font face=
"arial"
>6</font></td>
<td><font face=
"arial"
>7</font></td>
<td><font face=
"arial"
>8</font></td>
<td><font face=
"arial"
>9</font></td>
</
tr
>
</table>',
},
{
new
=> {
font
=>
'arial'
,
font_size
=>
'+3'
,
td
=> {
class
=>
'myClass'
},
th
=> {
class
=>
'heading'
,
bgcolor
=>
'gray'
},
table
=> {
width
=>
'100%'
},
labels
=> 1,
},
dat
=> [ [
qw/one two three four/
], [
qw/five six seven eight/
], [
qw/nine ten eleven twelve/
] ],
res
=> '<table width=
"100%"
>
<
tr
>
<th bgcolor=
"gray"
class=
"heading"
><font face=
"arial"
size=
"+3"
>one</font></th>
<th bgcolor=
"gray"
class=
"heading"
><font face=
"arial"
size=
"+3"
>two</font></th>
<th bgcolor=
"gray"
class=
"heading"
><font face=
"arial"
size=
"+3"
>three</font></th>
<th bgcolor=
"gray"
class=
"heading"
><font face=
"arial"
size=
"+3"
>four</font></th>
</
tr
>
<
tr
>
<td class=
"myClass"
><font face=
"arial"
size=
"+3"
>five</font></td>
<td class=
"myClass"
><font face=
"arial"
size=
"+3"
>six</font></td>
<td class=
"myClass"
><font face=
"arial"
size=
"+3"
>seven</font></td>
<td class=
"myClass"
><font face=
"arial"
size=
"+3"
>eight</font></td>
</
tr
>
<
tr
>
<td class=
"myClass"
><font face=
"arial"
size=
"+3"
>nine</font></td>
<td class=
"myClass"
><font face=
"arial"
size=
"+3"
>ten</font></td>
<td class=
"myClass"
><font face=
"arial"
size=
"+3"
>eleven</font></td>
<td class=
"myClass"
><font face=
"arial"
size=
"+3"
>twelve</font></td>
</
tr
>
</table>',
},
{
new
=> {
table_width
=>
'95%'
,
border
=> 0,
table_cellpadding
=>
'3'
,
table_cellspacing
=>
'5'
,
lalign
=>
'right'
,
labels
=> 1,
},
dat
=> [ {
qw/one two/
}, {
qw/five six/
}, {
qw/nine ten/
} ],
res
=> '<table border=
"0"
cellpadding=
"3"
cellspacing=
"5"
width=
"95%"
>
<
tr
>
<th align=
"right"
><table width=
"100%"
>
<
tr
>
<th align=
"right"
>one</th>
</
tr
>
<
tr
>
<th align=
"right"
>two</th>
</
tr
>
</table></th>
</
tr
>
<
tr
>
<td><table width=
"100%"
>
<
tr
>
<td>five</td>
</
tr
>
<
tr
>
<td>six</td>
</
tr
>
</table></td>
</
tr
>
<
tr
>
<td><table width=
"100%"
>
<
tr
>
<td>nine</td>
</
tr
>
<
tr
>
<td>ten</td>
</
tr
>
</table></td>
</
tr
>
</table>',
},
{
new
=> {
labels
=>
'L'
,
vertical
=> 1,
table_width
=>
'99%'
,
header
=> 1,
body
=> {
text
=>
'red'
,
bgcolor
=>
'black'
},
},
dat
=> [
[
'User'
,
'Name'
,
'Ext'
,
'Email'
],
[
'nwiger'
,
'Nathan Wiger'
,
'x43264'
,
'nate@wiger.org'
],
[
'jbobson'
,
'Jim Bobson'
,
'x92811'
,
'jim@bobson.com'
],
],
res
=> 'Content-type: text/html; charset=iso-8859-1
<html>
<head>
</head>
<body bgcolor=
"black"
text=
"red"
>
<table width=
"99%"
>
<
tr
>
<th>User</th>
<td>nwiger</td>
<td>jbobson</td>
</
tr
>
<
tr
>
<th>Name</th>
<td>Nathan Wiger</td>
<td>Jim Bobson</td>
</
tr
>
<
tr
>
<th>Ext</th>
<td>x43264</td>
<td>x92811</td>
</
tr
>
<
tr
>
<th>Email</th>
<td>nate
@wiger
.org</td>
<td>jim
@bobson
.com</td>
</
tr
>
</table></body></html>
',
},
{
new
=> {
htmlize
=> 1,
title
=>
'Tacos for everyone'
,
null
=>
'N/A'
,
nulltags
=> {
bgcolor
=>
'gray'
},
header
=> 1,
text
=>
'Hey there!'
,
vertical
=> 1,
labels
=>
'R'
,
},
dat
=> [
[
'User'
,
'Name'
,
'Ext'
,
'Email'
],
[
'nwiger'
,
'Nathan Wiger'
,
undef
,
'nate@wiger.org'
],
[
'jbobson'
,
undef
,
'x92811'
,
'jim@bobson.com'
],
],
res
=> 'Content-type: text/html; charset=iso-8859-1
<html>
<head>
<title>Tacos
for
everyone</title>
</head>
<body bgcolor=
"white"
>
<h3>Tacos
for
everyone</h3>
Hey there!
<table>
<
tr
>
<td>User</td>
<td>nwiger</td>
<th>jbobson</th>
</
tr
>
<
tr
>
<td>Name</td>
<td>Nathan Wiger</td>
<th bgcolor=
"gray"
>N/A</th>
</
tr
>
<
tr
>
<td>Ext</td>
<td bgcolor=
"gray"
>N/A</td>
<th>x92811</th>
</
tr
>
<
tr
>
<td>Email</td>
<td><a href=
"mailto:nate@wiger.org"
>nate
@wiger
.org</a></td>
<th><a href=
"mailto:jim@bobson.com"
>jim
@bobson
.com</a></th>
</
tr
>
</table></body></html>
',
},
{
new
=> {
font
=>
'should be missing'
,
stylesheet
=>
'/path/to/style.css'
,
styleclass
=>
'yo.momma'
,
td
=> {
class
=>
'overridden'
},
th
=> {
class
=>
'killed'
},
tr
=> {
class
=>
'bleearged'
},
labels
=> 1,
header
=> 1,
title
=>
'Test Results??>'
,
body_BGCOLOR
=>
'blah'
,
},
dat
=> [ [
'n1'
,
'n2'
,
'n3'
,
'n4'
], [ 1..4 ], [6..9] ],
res
=> 'Content-type: text/html; charset=iso-8859-1
<html>
<head>
<
link
rel=
"stylesheet"
href=
"/path/to/style.css"
/>
<title>Test Results??
>
;</title>
</head>
<body bgcolor=
"blah"
>
<h3>Test Results??></h3>
<table class=
"yo.momma"
>
<
tr
class=
"yo.momma"
>
<th class=
"yo.momma"
>n1</th>
<th class=
"yo.momma"
>n2</th>
<th class=
"yo.momma"
>n3</th>
<th class=
"yo.momma"
>n4</th>
</
tr
>
<
tr
class=
"yo.momma"
>
<td class=
"yo.momma"
>1</td>
<td class=
"yo.momma"
>2</td>
<td class=
"yo.momma"
>3</td>
<td class=
"yo.momma"
>4</td>
</
tr
>
<
tr
class=
"yo.momma"
>
<td class=
"yo.momma"
>6</td>
<td class=
"yo.momma"
>7</td>
<td class=
"yo.momma"
>8</td>
<td class=
"yo.momma"
>9</td>
</
tr
>
</table></body></html>
',
},
{
new
=> {
useid
=>
'results'
,
labels
=> 1,
},
dat
=> [ [
'n1'
,
'n2'
,
'n3'
,
'n4'
], [ 1..4 ], [6..9] ],
res
=> '<table id=
"results"
>
<
tr
id=
"results_r1"
>
<th id=
"results_r1c1"
>n1</th>
<th id=
"results_r1c2"
>n2</th>
<th id=
"results_r1c3"
>n3</th>
<th id=
"results_r1c4"
>n4</th>
</
tr
>
<
tr
id=
"results_r2"
>
<td id=
"results_r2c1"
>1</td>
<td id=
"results_r2c2"
>2</td>
<td id=
"results_r2c3"
>3</td>
<td id=
"results_r2c4"
>4</td>
</
tr
>
<
tr
id=
"results_r3"
>
<td id=
"results_r3c1"
>6</td>
<td id=
"results_r3c2"
>7</td>
<td id=
"results_r3c3"
>8</td>
<td id=
"results_r3c4"
>9</td>
</
tr
>
</table>',
},
{
new
=> {
stylesheet
=> 1,
styleclass
=> [
'one'
,
'two'
,
'four'
],
nulltags
=> {
class
=>
'null'
},
null
=>
'NULL'
,
},
dat
=> [ [
'n1'
,
'n2'
,
undef
,
'n4'
], [ 1..4 ], [6..9], [10,
undef
,12,13], [
'a'
..
'd'
] ],
res
=> '<table class=
"one"
>
<
tr
class=
"one"
>
<td class=
"one"
>n1</td>
<td class=
"one"
>n2</td>
<td class=
"null"
>NULL</td>
<td class=
"one"
>n4</td>
</
tr
>
<
tr
class=
"two"
>
<td class=
"two"
>1</td>
<td class=
"two"
>2</td>
<td class=
"two"
>3</td>
<td class=
"two"
>4</td>
</
tr
>
<
tr
class=
"four"
>
<td class=
"four"
>6</td>
<td class=
"four"
>7</td>
<td class=
"four"
>8</td>
<td class=
"four"
>9</td>
</
tr
>
<
tr
class=
"one"
>
<td class=
"one"
>10</td>
<td class=
"null"
>NULL</td>
<td class=
"one"
>12</td>
<td class=
"one"
>13</td>
</
tr
>
<
tr
class=
"two"
>
<td class=
"two"
>a</td>
<td class=
"two"
>b</td>
<td class=
"two"
>c</td>
<td class=
"two"
>d</td>
</
tr
>
</table>',
},
);
for
(
@tests
) {
my
$qt
= HTML::QuickTable->new(%{
$_
->{new}});
my
$qtr
=
$qt
->render(
$_
->{dat});
my
$res
= ok(
$qtr
,
$_
->{res});
if
(!
$res
&&
$ENV
{LOGNAME} eq
'nwiger'
) {
open
(O,
">/tmp/qt.1"
);
print
O
$_
->{res};
close
O;
open
(O,
">/tmp/qt.2"
);
print
O
$qtr
;
close
O;
system
"diff /tmp/qt.?"
;
system
"rm -f /tmp/qt.?"
;
exit
$res
;
}
}