~ubuntu-branches/ubuntu/gutsy/horae/gutsy

« back to all changes in this revision

Viewing changes to 0CPAN/Spreadsheet-WriteExcel-2.15/t/01_add_worksheet.t

  • Committer: Bazaar Package Importer
  • Author(s): Carlo Segre
  • Date: 2006-12-28 12:36:48 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20061228123648-9xnjr76wfthd92cq
Tags: 064-1
New upstream release, dropped dependency on libtk-filedialog-perl.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/perl -wl
2
 
 
3
 
###############################################################################
4
 
#
5
 
# A test for Spreadsheet::WriteExcel.
6
 
#
7
 
# Tests for valid worksheet name handling.
8
 
#
9
 
# reverse('�'), March 2005, John McNamara, jmcnamara@cpan.org
10
 
#
11
 
 
12
 
 
13
 
use strict;
14
 
 
15
 
use Spreadsheet::WriteExcel;
16
 
use Test::More tests => 69;
17
 
 
18
 
 
19
 
# Tests for valid and invalid worksheet names
20
 
my @tests1  = (
21
 
                # Tests for valid names
22
 
                [ 'PASS', undef,      'No worksheet name'           ],
23
 
                [ 'PASS', '',         'Blank worksheet name'        ],
24
 
                [ 'PASS', 'Sheet10',  'Valid worksheet name'        ],
25
 
                [ 'PASS', 'a' x 31,   'Valid 31 char name'          ],
26
 
 
27
 
                # Tests for invalid names
28
 
                [ 'FAIL', 'Sheet1',   'Caught duplicate name'       ],
29
 
                [ 'FAIL', 'Sheet2',   'Caught duplicate name'       ],
30
 
                [ 'FAIL', 'Sheet3',   'Caught duplicate name'       ],
31
 
                [ 'FAIL', 'sheet1',   'Caught case-insensitive name'],
32
 
                [ 'FAIL', 'SHEET1',   'Caught case-insensitive name'],
33
 
                [ 'FAIL', 'sheetz',   'Caught case-insensitive name'],
34
 
                [ 'FAIL', 'SHEETZ',   'Caught case-insensitive name'],
35
 
                [ 'FAIL', 'a' x 32,   'Caught long name'            ],
36
 
                [ 'FAIL', '[',        'Caught invalid char'         ],
37
 
                [ 'FAIL', ']',        'Caught invalid char'         ],
38
 
                [ 'FAIL', ':',        'Caught invalid char'         ],
39
 
                [ 'FAIL', '*',        'Caught invalid char'         ],
40
 
                [ 'FAIL', '?',        'Caught invalid char'         ],
41
 
                [ 'FAIL', '/',        'Caught invalid char'         ],
42
 
                [ 'FAIL', '\\',       'Caught invalid char'         ],
43
 
 
44
 
             );
45
 
 
46
 
 
47
 
 
48
 
 
49
 
###############################################################################
50
 
#
51
 
# Tests 1. ASCII tests
52
 
#
53
 
my $test_file  = "temp_test_file.xml";
54
 
my $workbook   = Spreadsheet::WriteExcel->new($test_file);
55
 
my $worksheet1 = $workbook->add_worksheet();        # Implicit name 'Sheet1'
56
 
my $worksheet2 = $workbook->add_worksheet();        # Implicit name 'Sheet2'
57
 
my $worksheet3 = $workbook->add_worksheet('Sheet3');
58
 
my $worksheet4 = $workbook->add_worksheet('Sheetz');
59
 
 
60
 
for my $test_ref (@tests1) {
61
 
 
62
 
    my $target    = $test_ref->[0];
63
 
    my $sheetname = $test_ref->[1];
64
 
    my $caption   = $test_ref->[2];
65
 
 
66
 
    eval {$workbook->_check_sheetname($sheetname)};
67
 
 
68
 
    my $result = $@ ? 'FAIL' : 'PASS';
69
 
 
70
 
    $sheetname = 'undef' unless defined $sheetname;
71
 
 
72
 
    is($result, $target, sprintf " \t%-7s %-28s: %s",
73
 
                                 'ASCII:', $caption, $sheetname);
74
 
}
75
 
 
76
 
$workbook->close();
77
 
 
78
 
 
79
 
###############################################################################
80
 
#
81
 
# Tests 2. UTF16-BE tests
82
 
#
83
 
 
84
 
$workbook   = Spreadsheet::WriteExcel->new($test_file);
85
 
$worksheet1 = $workbook->add_worksheet();        # Implicit name 'Sheet1'
86
 
$worksheet2 = $workbook->add_worksheet();        # Implicit name 'Sheet2'
87
 
$worksheet3 = $workbook->add_worksheet('Sheet3');
88
 
$worksheet4 = $workbook->add_worksheet("\0S\0h\0e\0e\0t\0z", 1);
89
 
 
90
 
for my $test_ref (@tests1) {
91
 
 
92
 
    my $target    = $test_ref->[0];
93
 
    my $sheetname = $test_ref->[1];
94
 
    my $caption   = $test_ref->[2];
95
 
 
96
 
    # Convert ASCII to UTF16-BE if not blank or undef
97
 
    $sheetname = pack "n*", unpack "C*", $sheetname if $sheetname;
98
 
 
99
 
    eval {$workbook->_check_sheetname($sheetname, 1)};
100
 
 
101
 
    my $result = $@ ? 'FAIL' : 'PASS';
102
 
 
103
 
    $sheetname = 'undef' unless defined $sheetname;
104
 
 
105
 
    # Change null byte to \0 for printing
106
 
    $sheetname =~ s/\0/\\0/g;
107
 
 
108
 
    is($result, $target, sprintf " \t%-7s %-28s: %s",
109
 
                                 'UTF-16:', $caption, $sheetname);
110
 
}
111
 
 
112
 
$workbook->close();
113
 
 
114
 
 
115
 
 
116
 
###############################################################################
117
 
#
118
 
# Tests 3. UTF-8 tests
119
 
#
120
 
 
121
 
SKIP: {
122
 
 
123
 
 
124
 
my $uni = chr 0x263A;
125
 
my @tests2  = (
126
 
                # Tests for valid names
127
 
                [ 'PASS', $uni,      'Unicode char'                 ],
128
 
                [ 'PASS', $uni x 31,   'Valid 31 char name'         ],
129
 
 
130
 
                # Tests for invalid names
131
 
                [ 'FAIL', chr 0x0438, 'Caught duplicate name'       ],
132
 
                [ 'FAIL', chr 0x0418, 'Caught case-insensitive name'],
133
 
                [ 'FAIL', $uni x 32,  'Caught long name'            ],
134
 
                [ 'FAIL', '[' . $uni, 'Caught invalid char'         ],
135
 
                [ 'FAIL', ']' . $uni, 'Caught invalid char'         ],
136
 
                [ 'FAIL', ':' . $uni, 'Caught invalid char'         ],
137
 
                [ 'FAIL', '*' . $uni, 'Caught invalid char'         ],
138
 
                [ 'FAIL', '?' . $uni, 'Caught invalid char'         ],
139
 
                [ 'FAIL', '/' . $uni, 'Caught invalid char'         ],
140
 
                [ 'FAIL', '\\'. $uni, 'Caught invalid char'         ],
141
 
 
142
 
             );
143
 
 
144
 
skip "\tskipped tests requires Perl 5.8 Unicode support", 0 + @tests1 + @tests2 if $] < 5.008;
145
 
 
146
 
 
147
 
$workbook   = Spreadsheet::WriteExcel->new($test_file);
148
 
$worksheet1 = $workbook->add_worksheet();        # Implicit name 'Sheet1'
149
 
$worksheet2 = $workbook->add_worksheet();        # Implicit name 'Sheet2'
150
 
$worksheet3 = $workbook->add_worksheet('Sheet3');
151
 
$worksheet4 = $workbook->add_worksheet("\0S\0h\0e\0e\0t\0z", 1);
152
 
my $worksheet5 = $workbook->add_worksheet(chr 0x0438);
153
 
 
154
 
 
155
 
for my $test_ref (@tests1) {
156
 
 
157
 
    my $target    = $test_ref->[0];
158
 
    my $sheetname = $test_ref->[1];
159
 
    my $caption   = $test_ref->[2];
160
 
 
161
 
    require Encode;
162
 
    $sheetname = Encode::encode_utf8($sheetname) if $sheetname;
163
 
 
164
 
    eval {$workbook->_check_sheetname($sheetname)};
165
 
 
166
 
    my $result = $@ ? 'FAIL' : 'PASS';
167
 
 
168
 
    $sheetname = 'undef' unless defined $sheetname;
169
 
 
170
 
    # Change null byte to \0 for printing
171
 
    $sheetname =~ s/\0/\\0/g;
172
 
 
173
 
    is($result, $target, sprintf " \t%-7s %-28s: %s",
174
 
                                 'UTF-8:', $caption, $sheetname);
175
 
}
176
 
 
177
 
 
178
 
for my $test_ref (@tests2) {
179
 
 
180
 
    my $target    = $test_ref->[0];
181
 
    my $sheetname = $test_ref->[1];
182
 
    my $caption   = $test_ref->[2];
183
 
 
184
 
    eval {$workbook->_check_sheetname($sheetname)};
185
 
 
186
 
    my $result = $@ ? 'FAIL' : 'PASS';
187
 
 
188
 
    $sheetname = 'undef' unless defined $sheetname;
189
 
 
190
 
    is($result, $target, sprintf " \t%-7s %-28s: %s",
191
 
                                 'UTF-8:', $caption, '');
192
 
}
193
 
 
194
 
 
195
 
$workbook->close();
196
 
 
197
 
 
198
 
}
199
 
 
200
 
unlink $test_file;
201
 
 
202
 
 
203
 
__END__
204
 
 
205
 
 
206