#!/usr/bin/perl -w
###############################################################################
#
# A test for Spreadsheet::WriteExcel.
#
# Tests for the Excel DV structure used in data validation.
#
# reverse('©'), September 2008, John McNamara, jmcnamara@cpan.org
#
use strict;
use Spreadsheet::WriteExcel;
use Test::More tests => 43;
###############################################################################
#
# Tests setup
#
my $test_file = 'temp_test_file.xls';
my $workbook = Spreadsheet::WriteExcel->new($test_file);
my $worksheet = $workbook->add_worksheet();
my $target;
my $result;
my $caption;
# Store worksheet data in memory so we can access it for testing.
$worksheet->{_using_tmpfile} = 0;
###############################################################################
#
# Test 1 Integer between 1 and 10.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
});
$worksheet->_store_validations();
$caption = " \tData validation api: integer between";
$target = join " ", qw(
BE 01 2C 00 01 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 2 Integer not between 1 and 10.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'not between',
minimum => 1,
maximum => 10,
});
$worksheet->_store_validations();
$caption = " \tData validation api: integer not between";
$target = join " ", qw(
BE 01 2C 00 01 01 1C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 3,4,5 Integer == 1.
#
for my $operator ('equal to', '=', '==') {
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => $operator,
value => 1,
});
$worksheet->_store_validations();
$caption = " \tData validation api: integer equal to";
$target = join " ", qw(
BE 01 29 00 01 01 2C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
}
###############################################################################
#
# Test 6,7,8 Integer != 1.
#
for my $operator ('not equal to', '<>', '!=') {
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => $operator,
value => 1,
});
$worksheet->_store_validations();
$caption = " \tData validation api: integer not equal to";
$target = join " ", qw(
BE 01 29 00 01 01 3C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
}
###############################################################################
#
# Test 9,10 Integer > 1.
#
for my $operator ('greater than', '>') {
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => $operator,
value => 1,
});
$worksheet->_store_validations();
$caption = " \tData validation api: integer >";
$target = join " ", qw(
BE 01 29 00 01 01 4C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
}
###############################################################################
#
# Test 11,12 Integer < 1.
#
for my $operator ('less than', '<') {
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => $operator,
value => 1,
});
$worksheet->_store_validations();
$caption = " \tData validation api: integer <";
$target = join " ", qw(
BE 01 29 00 01 01 5C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
}
###############################################################################
#
# Test 13,14 Integer >= 1.
#
for my $operator ('greater than or equal to', '>=') {
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => $operator,
value => 1,
});
$worksheet->_store_validations();
$caption = " \tData validation api: integer >=";
$target = join " ", qw(
BE 01 29 00 01 01 6C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
}
###############################################################################
#
# Test 15,16 Integer <= 1.
#
for my $operator ('less than or equal to', '<=') {
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => $operator,
value => 1,
});
$worksheet->_store_validations();
$caption = " \tData validation api: integer <=";
$target = join " ", qw(
BE 01 29 00 01 01 7C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
}
###############################################################################
#
# Test 17 Integer between 1 and 10 (same as test 1) + Ignore blank off.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
ignore_blank => 0,
});
$worksheet->_store_validations();
$caption = " \tData validation api: ignore blank off";
$target = join " ", qw(
BE 01 2C 00 01 00 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 18 Integer between 1 and 10 (same as test 1) + Error style == warning..
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
error_type => 'warning',
});
$worksheet->_store_validations();
$caption = " \tData validation api: error style = warning";
$target = join " ", qw(
BE 01 2C 00 11 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 19 Integer between 1 and 10 (same as test 1) + Error style == infor..
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
error_type => 'information',
});
$worksheet->_store_validations();
$caption = " \tData validation api: error style = information";
$target = join " ", qw(
BE 01 2C 00 21 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 20 Integer between 1 and 10 (same as test 1)
# + input title.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
input_title => 'Input title January',
});
$worksheet->_store_validations();
$caption = " \tData validation api: with input title";
$target = join " ", qw(
BE 01 3E 00 01 01 0C 00 13 00 00 49 6E 70 75 74
20 74 69 74 6C 65 20 4A 61 6E 75 61 72 79 01 00
00 00 01 00 00 00 01 00 00 00 03 00 00 00 1E 01
00 03 00 00 00 1E 0A 00 01 00 04 00 04 00 01 00
01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 21 Integer between 1 and 10 (same as test 1)
# + input title.
# + input message.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
input_title => 'Input title January',
input_message => 'Input message February',
});
$worksheet->_store_validations();
$caption = " \tData validation api: + input message";
$target = join " ", qw(
BE 01 53 00 01 01 0C 00 13 00 00 49 6E 70 75 74
20 74 69 74 6C 65 20 4A 61 6E 75 61 72 79 01 00
00 00 16 00 00 49 6E 70 75 74 20 6D 65 73 73 61
67 65 20 46 65 62 72 75 61 72 79 01 00 00 00 03
00 00 00 1E 01 00 03 00 00 00 1E 0A 00 01 00 04
00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 22 Integer between 1 and 10 (same as test 1)
# + input title.
# + input message.
# + error title.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
input_title => 'Input title January',
input_message => 'Input message February',
error_title => 'Error title March',
});
$worksheet->_store_validations();
$caption = " \tData validation api: + error title";
$target = join " ", qw(
BE 01 63 00 01 01 0C 00 13 00 00 49 6E 70 75 74
20 74 69 74 6C 65 20 4A 61 6E 75 61 72 79 11 00
00 45 72 72 6F 72 20 74 69 74 6C 65 20 4D 61 72
63 68 16 00 00 49 6E 70 75 74 20 6D 65 73 73 61
67 65 20 46 65 62 72 75 61 72 79 01 00 00 00 03
00 00 00 1E 01 00 03 00 00 00 1E 0A 00 01 00 04
00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 23 Integer between 1 and 10 (same as test 1)
# + input title.
# + input message.
# + error title.
# + error message.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
input_title => 'Input title January',
input_message => 'Input message February',
error_title => 'Error title March',
error_message => 'Error message April',
});
$worksheet->_store_validations();
$caption = " \tData validation api: + error message";
$target = join " ", qw(
BE 01 75 00 01 01 0C 00 13 00 00 49 6E 70 75 74
20 74 69 74 6C 65 20 4A 61 6E 75 61 72 79 11 00
00 45 72 72 6F 72 20 74 69 74 6C 65 20 4D 61 72
63 68 16 00 00 49 6E 70 75 74 20 6D 65 73 73 61
67 65 20 46 65 62 72 75 61 72 79 13 00 00 45 72
72 6F 72 20 6D 65 73 73 61 67 65 20 41 70 72 69
6C 03 00 00 00 1E 01 00 03 00 00 00 1E 0A 00 01
00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 24 Integer between 1 and 10 (same as test 1)
# + input title.
# + input message.
# + error title.
# + error message.
# - input message box.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
input_title => 'Input title January',
input_message => 'Input message February',
error_title => 'Error title March',
error_message => 'Error message April',
show_input => 0,
});
$worksheet->_store_validations();
$caption = " \tData validation api: no input box";
$target = join " ", qw(
BE 01 75 00 01 01 08 00 13 00 00 49 6E 70 75 74
20 74 69 74 6C 65 20 4A 61 6E 75 61 72 79 11 00
00 45 72 72 6F 72 20 74 69 74 6C 65 20 4D 61 72
63 68 16 00 00 49 6E 70 75 74 20 6D 65 73 73 61
67 65 20 46 65 62 72 75 61 72 79 13 00 00 45 72
72 6F 72 20 6D 65 73 73 61 67 65 20 41 70 72 69
6C 03 00 00 00 1E 01 00 03 00 00 00 1E 0A 00 01
00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 25 Integer between 1 and 10 (same as test 1)
# + input title.
# + input message.
# + error title.
# + error message.
# - input message box.
# - error message box.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
input_title => 'Input title January',
input_message => 'Input message February',
error_title => 'Error title March',
error_message => 'Error message April',
show_input => 0,
show_error => 0,
});
$worksheet->_store_validations();
$caption = " \tData validation api: no error box";
$target = join " ", qw(
BE 01 75 00 01 01 00 00 13 00 00 49 6E 70 75 74
20 74 69 74 6C 65 20 4A 61 6E 75 61 72 79 11 00
00 45 72 72 6F 72 20 74 69 74 6C 65 20 4D 61 72
63 68 16 00 00 49 6E 70 75 74 20 6D 65 73 73 61
67 65 20 46 65 62 72 75 61 72 79 13 00 00 45 72
72 6F 72 20 6D 65 73 73 61 67 65 20 41 70 72 69
6C 03 00 00 00 1E 01 00 03 00 00 00 1E 0A 00 01
00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 26 'Any' value shouldn't produce a DV record.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'any',
});
$worksheet->_store_validations();
$caption = " \tData validation api: any validation";
$target = '';
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 27 Decimal = 1.2345
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'decimal',
criteria => '==',
value => 1.2345,
});
$worksheet->_store_validations();
$caption = " \tData validation api: decimal validation";
$target = join " ", qw(
BE 01 2F 00 02 01 2C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 09 00 00 00 1F 8D 97 6E
12 83 C0 F3 3F 00 00 00 00 01 00 04 00 04 00 01
00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 28 List = a,bb,ccc
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'list',
source => ['a', 'bb', 'ccc'],
});
$worksheet->_store_validations();
$caption = " \tData validation api: explicit list";
$target = join " ", qw(
BE 01 31 00 83 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 0B 00 00 00 17 08 00 61
00 62 62 00 63 63 63 00 00 00 00 01 00 04 00 04
00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 29 List = a,bb,ccc, No dropdown
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'list',
source => ['a', 'bb', 'ccc'],
dropdown => 0,
});
$worksheet->_store_validations();
$caption = " \tData validation api: list with no dropdown";
$target = join " ", qw(
BE 01 31 00 83 03 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 0B 00 00 00 17 08 00 61
00 62 62 00 63 63 63 00 00 00 00 01 00 04 00 04
00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 30 List = $D$1:$D$5
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('A1:A1',
{
validate => 'list',
source => '=$D$1:$D$5',
});
$worksheet->_store_validations();
$caption = " \tData validation api: list with range";
$target = join " ", qw(
BE 01 2F 00 03 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 09 00 00 00 25 00 00 04
00 03 00 03 00 00 00 00 00 01 00 00 00 00 00 00
00 00 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 31 Date = 39653 (2008-07-24)
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'date',
criteria => '==',
value => 39653,
});
$worksheet->_store_validations();
$caption = " \tData validation api: date";
$target = join " ", qw(
BE 01 29 00 04 01 2C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E E5 9A 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 32 Date = 2008-07-24T
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'date',
criteria => '==',
value => '2008-07-24T',
});
$worksheet->_store_validations();
$caption = " \tData validation api: date auto";
$target = join " ", qw(
BE 01 29 00 04 01 2C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E E5 9A 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 33 Date between ranges.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'date',
criteria => 'between',
minimum => '2008-01-01T',
maximum => '2008-12-12T',
});
$worksheet->_store_validations();
$caption = " \tData validation api: date auto, between";
$target = join " ", qw(
BE 01 2C 00 04 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 18 9A 03
00 00 00 1E 72 9B 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 34 Time = 0.5 (12:00:00)
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5:B5',
{
validate => 'time',
criteria => '==',
value => 0.5,
});
$worksheet->_store_validations();
$caption = " \tData validation api: time";
$target = join " ", qw(
BE 01 2F 00 05 01 2C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 09 00 00 00 1F 00 00 00
00 00 00 E0 3F 00 00 00 00 01 00 04 00 04 00 01
00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 35 Time = T12:00:00
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'time',
criteria => '==',
value => 'T12:00:00',
});
$worksheet->_store_validations();
$caption = " \tData validation api: time auto";
$target = join " ", qw(
BE 01 2F 00 05 01 2C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 09 00 00 00 1F 00 00 00
00 00 00 E0 3F 00 00 00 00 01 00 04 00 04 00 01
00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 36 Custom == 10.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'Custom',
criteria => '==',
value => 10,
});
$worksheet->_store_validations();
$caption = " \tData validation api: custom";
$target = join " ", qw(
BE 01 29 00 07 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 0A 00 00
00 00 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 37 Check the row/col processing: single A1 style cell.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
});
$worksheet->_store_validations();
$caption = " \tData validation api: range options";
$target = join " ", qw(
BE 01 2C 00 01 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 38 Check the row/col processing: single A1 style range.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation('B5:B10',
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
});
$worksheet->_store_validations();
$caption = " \tData validation api: range options";
$target = join " ", qw(
BE 01 2C 00 01 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 09 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 39 Check the row/col processing: single (row, col) style cell.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation(4, 1,
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
});
$worksheet->_store_validations();
$caption = " \tData validation api: range options";
$target = join " ", qw(
BE 01 2C 00 01 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 04 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 40 Check the row/col processing: single (row, col) style range.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation(4, 1, 9, 1,
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
});
$worksheet->_store_validations();
$caption = " \tData validation api: range options";
$target = join " ", qw(
BE 01 2C 00 01 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 01 00 04 00 09 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 41 Check the row/col processing: multiple (row, col) style cells.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation(4, 1,
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
other_cells => [[4, 3, 4, 3]],
});
$worksheet->_store_validations();
$caption = " \tData validation api: range options";
$target = join " ", qw(
BE 01 34 00 01 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 02 00 04 00 04 00 01 00 01 00
04 00 04 00 03 00 03 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 42 Check the row/col processing: multiple (row, col) style cells.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation(4, 1,
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
other_cells => [[6, 1, 6, 1], [8, 1, 8, 1]],
});
$worksheet->_store_validations();
$caption = " \tData validation api: range options";
$target = join " ", qw(
BE 01 3C 00 01 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 03 00 04 00 04 00 01 00 01 00
06 00 06 00 01 00 01 00 08 00 08 00 01 00 01 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Test 43 Check the row/col processing: multiple (row, col) style cells.
#
$worksheet->{_data} = '';
$worksheet->{_validations} = [];
$worksheet->data_validation(4, 1, 9, 1,
{
validate => 'integer',
criteria => 'between',
minimum => 1,
maximum => 10,
other_cells => [[4, 3, 4, 3]],
});
$worksheet->_store_validations();
$caption = " \tData validation api: range options";
$target = join " ", qw(
BE 01 34 00 01 01 0C 00 01 00 00 00 01 00 00 00
01 00 00 00 01 00 00 00 03 00 00 00 1E 01 00 03
00 00 00 1E 0A 00 02 00 04 00 09 00 01 00 01 00
04 00 04 00 03 00 03 00
);
$result = unpack_record($worksheet->{_data});
is($result, $target, $caption);
###############################################################################
#
# Unpack the binary data into a format suitable for printing in tests.
#
sub unpack_record {
return join ' ', map {sprintf "%02X", $_} unpack "C*", $_[0];
}
# Cleanup
$workbook->close();
unlink $test_file;
__END__
Tool completed successfully