# first a mock package to simulate Spreadsheet::WriteExcel workbooks
package _MockWorkbook;
sub new {
my $class = shift;
bless [], $class;
}
sub add_format {
my $self = shift;
my $format = [@_];
push @$self, $format;
return $format;
}
# now the tests in main package
package main;
use strict;
use warnings;
use Spreadsheet::WriteExcel::Styler;
use Test::More tests => 6;
# create a styler object
my $workbook = _MockWorkbook->new;
my $styler = Spreadsheet::WriteExcel::Styler->new($workbook);
$styler->add_styles(
title => {align => "center",
border => 1,
bold => 1,
color => 'white',
bg_color => 'blue'},
right_border => {right => 6, # double line
right_color => 'blue'},
highlighted => {bg_color => 'silver'},
rotated => {rotation => 90},
);
# create formats in various ways
my $fmt1 = $styler->(qw/title right_border/);
my $fmt2 = $styler->(qw/right_border title/);
my $fmt3 = $styler->({right_border => 0,
highlighted => 1,
rotated => 1});
my $fmt4 = $styler->({rotated => 0,
highlighted => 0,
title => 1,
right_border => 1});
my $fmt5 = $styler->([qw/title right_border/]);
# check if the format cache worked OK
is (scalar(@$workbook), 2, "workbook contains just 2 different formats");
is ($fmt1, $fmt2, "order indifferent");
isnt($fmt1, $fmt3, "different features");
is ($fmt1, $fmt4, "array/hashref are equivalent");
is ($fmt4, $fmt5, "arrayref/hashref are equivalent");
# error-checking
eval {$styler->(qw/title foo bar/)};
my $err = $@;
like($err, qr/unknown style/, 'error checking');