The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w

use strict;
use Test::More tests => 7;

eval "use Spreadsheet::WriteExcel;";

if ( $@ ) {
	plan( skip_all => "Spreadsheet::ParseExcel::SaveParser require Spreadsheet::WriteExcel" );
}

use utf8;
use Encode qw(encode);

use_ok ('Spreadsheet::ParseExcel::SaveParser');

use_ok ('Spreadsheet::WriteExcel');

my $xl_base_name = 't/excel_files/46_save_parser.xls';

my $xl_base = Spreadsheet::WriteExcel->new($xl_base_name);

# testing merged cells

# first, we need to generate excel file with merged cells
my $worksheet = $xl_base->add_worksheet();

my $format = $xl_base->add_format(
	border  => 6,
	valign  => 'vcenter',
	align   => 'center',
);

$worksheet->merge_range('A1:B2', 'V & H', $format);

$worksheet->merge_range('E5:H8', 'V & H', $format);

$worksheet->fit_to_pages(1, 1);

$xl_base->close;

# parse excel and write modified file
my $xl_parser = Spreadsheet::ParseExcel::SaveParser->new;
my $template = $xl_parser->Parse($xl_base_name);

# test writing data to merged cell
$template->worksheet (0)->AddCell (4, 4, 'V & H mod');

my $workbook;
{
    local $^W = 0;
 
    $workbook = $template->SaveAs ($xl_base_name . '.mod.xls');
}

$workbook->close;

# parse modified file and check for merged cell

my $template_mod = $xl_parser->Parse ($xl_base_name . '.mod.xls');

my $worksheet_mod = $template_mod->worksheet (0);

my $merged_areas = $worksheet_mod->get_merged_areas;

ok scalar @$merged_areas == 2, 'merged areas count';

my @fit = $worksheet_mod->get_fit_to_pages;

is_deeply (\@fit, [1, 1], 'fix for fit to pages');

#use Data::Dumper;
#warn Dumper $merged_areas;

# RowHeight

is_deeply $merged_areas->[0], [0, 0, 1, 1];

is_deeply $merged_areas->[1], [4, 4, 7, 7], 'overwritten merged cell position';

ok $worksheet_mod->Cell (4, 4)->value eq 'V & H mod', 'overwritten merged cell value';

unlink $xl_base_name;

unlink $xl_base_name . '.mod.xls';

1;