#!/usr/bin/perl -w
###############################################################################
#
# A test for Spreadsheet::WriteExcel.
#
# Tests for the internal methods used to write the MSODRAWINGGROUP record.
#
# reverse('©'), September 2005, John McNamara, jmcnamara@cpan.org
#
use strict;
use Spreadsheet::WriteExcel;
use Test::More tests => 34;
###############################################################################
#
# Tests setup
#
my $test_file = "temp_test_file.xls";
my $workbook;
my $worksheet1;
my $worksheet2;
my $worksheet3;
my $target;
my $result;
my $caption;
my $count1;
my $count2;
my $count3;
my @target_ids;
my @result_ids;
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$count1 = 1;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 5A 00 0F 00 00 F0 52 00 00 00 00 00 06 F0
18 00 00 00 02 04 00 00 02 00 00 00 02 00 00 00
01 00 00 00 01 00 00 00 02 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments.", $count1;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 2, 1025,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$count1 = 2;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 5A 00 0F 00 00 F0 52 00 00 00 00 00 06 F0
18 00 00 00 03 04 00 00 02 00 00 00 03 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments.", $count1;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 3, 1026,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$count1 = 3;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 5A 00 0F 00 00 F0 52 00 00 00 00 00 06 F0
18 00 00 00 04 04 00 00 02 00 00 00 04 00 00 00
01 00 00 00 01 00 00 00 04 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments.", $count1;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 4, 1027,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$count1 = 1023;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 5A 00 0F 00 00 F0 52 00 00 00 00 00 06 F0
18 00 00 00 00 08 00 00 02 00 00 00 00 04 00 00
01 00 00 00 01 00 00 00 00 04 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments.", $count1;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1024, 2047,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$count1 = 1024;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 62 00 0F 00 00 F0 5A 00 00 00 00 00 06 F0
20 00 00 00 01 08 00 00 03 00 00 00 01 04 00 00
01 00 00 00 01 00 00 00 00 04 00 00 01 00 00 00
01 00 00 00 33 00 0B F0 12 00 00 00 BF 00 08 00
08 00 81 01 09 00 00 08 C0 01 40 00 00 08 40 00
1E F1 10 00 00 00 0D 00 00 08 0C 00 00 08 17 00
00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments.", $count1;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1025, 2048,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$count1 = 2048;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 6A 00 0F 00 00 F0 62 00 00 00 00 00 06 F0
28 00 00 00 01 0C 00 00 04 00 00 00 01 08 00 00
01 00 00 00 01 00 00 00 00 04 00 00 01 00 00 00
00 04 00 00 01 00 00 00 01 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments.", $count1;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 2049, 3072,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$count1 = 1;
$count2 = 1;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 62 00 0F 00 00 F0 5A 00 00 00 00 00 06 F0
20 00 00 00 02 08 00 00 03 00 00 00 04 00 00 00
02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00
02 00 00 00 33 00 0B F0 12 00 00 00 BF 00 08 00
08 00 81 01 09 00 00 08 C0 01 40 00 00 08 40 00
1E F1 10 00 00 00 0D 00 00 08 0C 00 00 08 17 00
00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments.",
$count1, $count2;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 2, 1025,
2048, 2, 2, 2049,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$count1 = 2;
$count2 = 2;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 62 00 0F 00 00 F0 5A 00 00 00 00 00 06 F0
20 00 00 00 03 08 00 00 03 00 00 00 06 00 00 00
02 00 00 00 01 00 00 00 03 00 00 00 02 00 00 00
03 00 00 00 33 00 0B F0 12 00 00 00 BF 00 08 00
08 00 81 01 09 00 00 08 C0 01 40 00 00 08 40 00
1E F1 10 00 00 00 0D 00 00 08 0C 00 00 08 17 00
00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments.",
$count1, $count2;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 3, 1026,
2048, 2, 3, 2050,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$count1 = 1023;
$count2 = 1;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 62 00 0F 00 00 F0 5A 00 00 00 00 00 06 F0
20 00 00 00 02 08 00 00 03 00 00 00 02 04 00 00
02 00 00 00 01 00 00 00 00 04 00 00 02 00 00 00
02 00 00 00 33 00 0B F0 12 00 00 00 BF 00 08 00
08 00 81 01 09 00 00 08 C0 01 40 00 00 08 40 00
1E F1 10 00 00 00 0D 00 00 08 0C 00 00 08 17 00
00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments.",
$count1, $count2;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1024, 2047,
2048, 2, 2, 2049,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$count1 = 1023;
$count2 = 1023;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 62 00 0F 00 00 F0 5A 00 00 00 00 00 06 F0
20 00 00 00 00 0C 00 00 03 00 00 00 00 08 00 00
02 00 00 00 01 00 00 00 00 04 00 00 02 00 00 00
00 04 00 00 33 00 0B F0 12 00 00 00 BF 00 08 00
08 00 81 01 09 00 00 08 C0 01 40 00 00 08 40 00
1E F1 10 00 00 00 0D 00 00 08 0C 00 00 08 17 00
00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments.",
$count1, $count2;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1024, 2047,
2048, 2, 1024, 3071,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$count1 = 1024;
$count2 = 1024;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 72 00 0F 00 00 F0 6A 00 00 00 00 00 06 F0
30 00 00 00 01 10 00 00 05 00 00 00 02 08 00 00
02 00 00 00 01 00 00 00 00 04 00 00 01 00 00 00
01 00 00 00 02 00 00 00 00 04 00 00 02 00 00 00
01 00 00 00 33 00 0B F0 12 00 00 00 BF 00 08 00
08 00 81 01 09 00 00 08 C0 01 40 00 00 08 40 00
1E F1 10 00 00 00 0D 00 00 08 0C 00 00 08 17 00
00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments.",
$count1, $count2;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1025, 2048,
3072, 2, 1025, 4096,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$count1 = 1024;
$count2 = 1;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 6A 00 0F 00 00 F0 62 00 00 00 00 00 06 F0
28 00 00 00 02 0C 00 00 04 00 00 00 03 04 00 00
02 00 00 00 01 00 00 00 00 04 00 00 01 00 00 00
01 00 00 00 02 00 00 00 02 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments.",
$count1, $count2;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1025, 2048,
3072, 2, 2, 3073,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$worksheet3 = $workbook->add_worksheet();
$count1 = 1023;
$count2 = 1;
$count3 = 1023;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$worksheet3->write_comment($_ -1, 0, 'aaa') for 1 .. $count3;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 6A 00 0F 00 00 F0 62 00 00 00 00 00 06 F0
28 00 00 00 00 10 00 00 04 00 00 00 02 08 00 00
03 00 00 00 01 00 00 00 00 04 00 00 02 00 00 00
02 00 00 00 03 00 00 00 00 04 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments, " .
"Sheet3: %4d comments.", $count1, $count2, $count3;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1024, 2047,
2048, 2, 2, 2049,
3072, 3, 1024, 4095,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$worksheet3 = $workbook->add_worksheet();
$count1 = 1023;
$count2 = 1023;
$count3 = 1;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$worksheet3->write_comment($_ -1, 0, 'aaa') for 1 .. $count3;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 6A 00 0F 00 00 F0 62 00 00 00 00 00 06 F0
28 00 00 00 02 0C 00 00 04 00 00 00 02 08 00 00
03 00 00 00 01 00 00 00 00 04 00 00 02 00 00 00
00 04 00 00 03 00 00 00 02 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments, " .
"Sheet3: %4d comments.", $count1, $count2, $count3;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1024, 2047,
2048, 2, 1024, 3071,
3072, 3, 2, 3073,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$worksheet3 = $workbook->add_worksheet();
$count1 = 1024;
$count2 = 1;
$count3 = 1024;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$worksheet3->write_comment($_ -1, 0, 'aaa') for 1 .. $count3;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 7A 00 0F 00 00 F0 72 00 00 00 00 00 06 F0
38 00 00 00 01 14 00 00 06 00 00 00 04 08 00 00
03 00 00 00 01 00 00 00 00 04 00 00 01 00 00 00
01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00
00 04 00 00 03 00 00 00 01 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments, " .
"Sheet3: %4d comments.", $count1, $count2, $count3;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1025, 2048,
3072, 2, 2, 3073,
4096, 3, 1025, 5120,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$worksheet3 = $workbook->add_worksheet();
$count1 = 1024;
$count2 = 1024;
$count3 = 1;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$worksheet3->write_comment($_ -1, 0, 'aaa') for 1 .. $count3;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 7A 00 0F 00 00 F0 72 00 00 00 00 00 06 F0
38 00 00 00 02 14 00 00 06 00 00 00 04 08 00 00
03 00 00 00 01 00 00 00 00 04 00 00 01 00 00 00
01 00 00 00 02 00 00 00 00 04 00 00 02 00 00 00
01 00 00 00 03 00 00 00 02 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments, " .
"Sheet3: %4d comments.", $count1, $count2, $count3;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1025, 2048,
3072, 2, 1025, 4096,
5120, 3, 2, 5121,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Test. Same as previous except also tests that duplicates are ignored.
#
$workbook = Spreadsheet::WriteExcel->new($test_file);
$worksheet1 = $workbook->add_worksheet();
$worksheet2 = $workbook->add_worksheet();
$worksheet3 = $workbook->add_worksheet();
$count1 = 1024;
$count2 = 1024;
$count3 = 1;
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$worksheet3->write_comment($_ -1, 0, 'aaa') for 1 .. $count3;
# Duplicates.
$worksheet1->write_comment($_ -1, 0, 'aaa') for 1 .. $count1;
$worksheet2->write_comment($_ -1, 0, 'aaa') for 1 .. $count2;
$worksheet3->write_comment($_ -1, 0, 'aaa') for 1 .. $count3;
$workbook->_calc_mso_sizes();
$target = join " ", qw(
EB 00 7A 00 0F 00 00 F0 72 00 00 00 00 00 06 F0
38 00 00 00 02 14 00 00 06 00 00 00 04 08 00 00
03 00 00 00 01 00 00 00 00 04 00 00 01 00 00 00
01 00 00 00 02 00 00 00 00 04 00 00 02 00 00 00
01 00 00 00 03 00 00 00 02 00 00 00 33 00 0B F0
12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
C0 01 40 00 00 08 40 00 1E F1 10 00 00 00 0D 00
00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
);
$caption = sprintf " \tSheet1: %4d comments, Sheet2: %4d comments, " .
"Sheet3: %4d comments.", $count1, $count2, $count3;
$result = unpack_record($workbook->_add_mso_drawing_group());
is($result, $target, $caption);
# Test the parameters pass to the worksheets
$caption .= ' (params)';
@result_ids = ();
@target_ids = (
1024, 1, 1025, 2048,
3072, 2, 1025, 4096,
5120, 3, 2, 5121,
);
for my $sheet ($workbook->sheets()) {
push @result_ids, @{$sheet->{_object_ids}};
}
is_deeply(\@result_ids, \@target_ids , $caption);
$workbook->close();
###############################################################################
#
# Unpack the binary data into a format suitable for printing in tests.
#
sub unpack_record {
return join ' ', map {sprintf "%02X", $_} unpack "C*", $_[0];
}
# Cleanup
unlink $test_file;
__END__