78ae754c8cc22e0172a2b757cd120686f87aa244
[pspp] / tests / language / data-io / get-data-spreadsheet.at
1
2 m4_define([SPREADSHEET_TEST_PREP],[dnl
3  m4_if($1,[GNM],[dnl
4     AT_CHECK([gzip -c $top_srcdir/tests/language/data-io/Book1.gnm.unzipped > Book1.gnumeric])dnl
5     m4_define([testsheet],[Book1.gnumeric])dnl
6     AT_SKIP_IF([test n$GNM_READ_SUPPORT != nyes])dnl
7     ]) dnl
8  m4_if($1,[ODS],[dnl
9     AT_CHECK([cp $top_srcdir/tests/language/data-io/test.ods test.ods])dnl
10     m4_define([testsheet],[test.ods])dnl
11     AT_SKIP_IF([test n$ODF_READ_SUPPORT != nyes])dnl
12     ])dnl
13 ])
14
15 m4_define([CHECK_SPREADSHEET_READER],
16  [dnl
17 AT_SETUP([GET DATA /TYPE=$1 with CELLRANGE])
18 SPREADSHEET_TEST_PREP($1)
19 AT_DATA([get-data.sps], [dnl
20 GET DATA /TYPE=$1 /FILE='testsheet'  /READNAMES=off /SHEET=name 'This' /CELLRANGE=range 'g9:i13' .
21 DISPLAY VARIABLES.
22 LIST.
23 ])
24 AT_CHECK([pspp -o pspp.csv get-data.sps])
25 AT_CHECK([cat pspp.csv], [0], [dnl
26 Variable,Description,,Position
27 VAR001,Format: F8.2,,1
28 ,Measure: Scale,,
29 ,Display Alignment: Right,,
30 ,Display Width: 8,,
31 VAR002,Format: A8,,2
32 ,Measure: Nominal,,
33 ,Display Alignment: Left,,
34 ,Display Width: 8,,
35 VAR003,Format: F8.2,,3
36 ,Measure: Scale,,
37 ,Display Alignment: Right,,
38 ,Display Width: 8,,
39
40 Table: Data List
41 VAR001,VAR002,VAR003
42 .00,fred    ,20.00
43 1.00,11      ,21.00
44 2.00,twelve  ,22.00
45 3.00,13      ,23.00
46 4.00,14      ,24.00
47 ])
48 AT_CLEANUP
49
50 AT_SETUP([GET DATA /TYPE=$1 with CELLRANGE and READNAMES])
51 SPREADSHEET_TEST_PREP($1)
52 AT_DATA([get-data.sps], [dnl
53 GET DATA /TYPE=$1 /FILE='testsheet'  /READNAMES=on /SHEET=name 'This' /CELLRANGE=range 'g8:i13' .
54 DISPLAY VARIABLES.
55 LIST.
56 ])
57 AT_CHECK([pspp -o pspp.csv get-data.sps])
58 AT_CHECK([cat pspp.csv], [0], [dnl
59 Variable,Description,,Position
60 V1,Format: F8.2,,1
61 ,Measure: Scale,,
62 ,Display Alignment: Right,,
63 ,Display Width: 8,,
64 V2,Format: A8,,2
65 ,Measure: Nominal,,
66 ,Display Alignment: Left,,
67 ,Display Width: 8,,
68 VAR001,Format: F8.2,,3
69 ,Measure: Scale,,
70 ,Display Alignment: Right,,
71 ,Display Width: 8,,
72
73 Table: Data List
74 V1,V2,VAR001
75 .00,fred    ,20.00
76 1.00,11      ,21.00
77 2.00,twelve  ,22.00
78 3.00,13      ,23.00
79 4.00,14      ,24.00
80 ])
81 AT_CLEANUP
82
83 AT_SETUP([GET DATA /TYPE=$1 without CELLRANGE])
84 SPREADSHEET_TEST_PREP($1)
85 AT_DATA([get-data.sps], [dnl
86 GET DATA /TYPE=$1 /FILE='testsheet' /SHEET=index 3.
87 DISPLAY VARIABLES.
88 LIST.
89 ])
90 AT_CHECK([pspp -O format=csv get-data.sps], [0], [dnl
91 Variable,Description,,Position
92 name,Format: A8,,1
93 ,Measure: Nominal,,
94 ,Display Alignment: Left,,
95 ,Display Width: 8,,
96 id,Format: F8.2,,2
97 ,Measure: Scale,,
98 ,Display Alignment: Right,,
99 ,Display Width: 8,,
100 height,Format: F8.2,,3
101 ,Measure: Scale,,
102 ,Display Alignment: Right,,
103 ,Display Width: 8,,
104
105 warning: Cannot convert the value in the spreadsheet cell C4 to format (F8.2): Field contents are not numeric.
106
107 Table: Data List
108 name,id,height
109 fred    ,.00,23.40
110 bert    ,1.00,.56
111 charlie ,2.00,.  @&t@
112 dick    ,3.00,-34.09
113 ])
114 AT_CLEANUP
115
116 AT_SETUP([GET DATA /TYPE=$1 with missing data])
117 SPREADSHEET_TEST_PREP($1)
118 AT_DATA([get-data.sps], [dnl
119 * This sheet has no data in one of its variables
120 GET DATA /TYPE=$1 /FILE='testsheet' /READNAMES=on /SHEET=index 5.
121 DISPLAY VARIABLES.
122 LIST.
123 ])
124 AT_CHECK([pspp -o pspp.csv get-data.sps])
125 AT_CHECK([cat pspp.csv], [0], [dnl
126 Variable,Description,,Position
127 vone,Format: F8.2,,1
128 ,Measure: Scale,,
129 ,Display Alignment: Right,,
130 ,Display Width: 8,,
131 vtwo,Format: F8.2,,2
132 ,Measure: Scale,,
133 ,Display Alignment: Right,,
134 ,Display Width: 8,,
135 vthree,Format: A8,,3
136 ,Measure: Nominal,,
137 ,Display Alignment: Left,,
138 ,Display Width: 8,,
139 v4,Format: F8.2,,4
140 ,Measure: Scale,,
141 ,Display Alignment: Right,,
142 ,Display Width: 8,,
143
144 Table: Data List
145 vone,vtwo,vthree,v4
146 1.00,3.00,,5.00
147 2.00,4.00,,6.00
148 ])
149 AT_CLEANUP
150
151 dnl This syntax doesn't do anything particularly useful.
152 dnl It has been seen to cause a few crashes, so we check here that it
153 dnl doesn't do anthing bad.
154 AT_SETUP([GET DATA /TYPE=$1 with no options])
155 SPREADSHEET_TEST_PREP($1)
156 AT_DATA([get-data.sps], [dnl
157 * This sheet is empty
158 GET DATA /TYPE=$1 /FILE='testsheet'.
159 DISPLAY DICTIONARY.
160 LIST.
161 ])
162 AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [ignore])
163 AT_CLEANUP
164
165
166
167 AT_SETUP([GET DATA /TYPE=$1 with empty sheet])
168 SPREADSHEET_TEST_PREP($1)
169 AT_DATA([get-data.sps], [dnl
170 * This sheet is empty
171 GET DATA /TYPE=$1 /FILE='testsheet' /SHEET=name 'Empty'.
172 ])
173 AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [dnl
174 warning: Selected sheet or range of spreadsheet `testsheet' is empty.
175 ])
176 AT_CLEANUP
177
178 AT_SETUP([GET DATA /TYPE=$1 with nonexistent sheet])
179 SPREADSHEET_TEST_PREP($1)
180 AT_DATA([get-data.sps], [dnl
181 * This sheet doesnt exist.
182 GET DATA /TYPE=$1 /FILE='testsheet' /SHEET=name 'foobarxx'.
183 ])
184 AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [dnl
185 warning: Selected sheet or range of spreadsheet `testsheet' is empty.
186 ])
187 AT_CLEANUP
188 ])
189
190
191 AT_BANNER([GET DATA Spreadsheet /TYPE=GNM])
192
193 CHECK_SPREADSHEET_READER([GNM])
194
195 dnl Check for a bug where gnumeric files were interpreted incorrectly
196 AT_SETUP([GET DATA /TYPE=GNM sheet index bug])
197 AT_SKIP_IF([test n$GNM_READ_SUPPORT != nyes])
198 AT_DATA([minimal3.gnumeric],[dnl
199 <?xml version="1.0" encoding="UTF-8"?>
200 <gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd">
201   <gnm:Version Epoch="1" Major="10" Minor="8" Full="1.10.8"/>
202   <gnm:SheetNameIndex>
203     <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet1</gnm:SheetName>
204     <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet2</gnm:SheetName>
205     <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet3</gnm:SheetName>
206   </gnm:SheetNameIndex>
207   <gnm:Sheets>
208     <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE" GridColor="0:0:0">
209       <gnm:Name>Sheet1</gnm:Name>
210       <gnm:MaxCol>2</gnm:MaxCol>
211       <gnm:MaxRow>3</gnm:MaxRow>
212       <gnm:Names>
213         <gnm:Name>
214           <gnm:name>Print_Area</gnm:name>
215           <gnm:value>#REF!</gnm:value>
216           <gnm:position>A1</gnm:position>
217         </gnm:Name>
218         <gnm:Name>
219           <gnm:name>Sheet_Title</gnm:name>
220           <gnm:value>&quot;Sheet1&quot;</gnm:value>
221           <gnm:position>A1</gnm:position>
222         </gnm:Name>
223       </gnm:Names>
224       <gnm:Cols DefaultSizePts="48">
225         <gnm:ColInfo No="0" Unit="94.5" HardSize="1"/>
226         <gnm:ColInfo No="1" Unit="48" Count="2"/>
227       </gnm:Cols>
228       <gnm:Rows DefaultSizePts="12.75">
229         <gnm:RowInfo No="0" Unit="13.5" Count="4"/>
230       </gnm:Rows>
231       <gnm:Cells>
232         <gnm:Cell Row="0" Col="0" ValueType="60">Name</gnm:Cell>
233         <gnm:Cell Row="0" Col="1" ValueType="60">x</gnm:Cell>
234         <gnm:Cell Row="0" Col="2" ValueType="60">y</gnm:Cell>
235         <gnm:Cell Row="1" Col="0" ValueType="60">Sheet One</gnm:Cell>
236         <gnm:Cell Row="1" Col="1" ValueType="40">1</gnm:Cell>
237         <gnm:Cell Row="1" Col="2" ValueType="40">2</gnm:Cell>
238         <gnm:Cell Row="2" Col="0" ValueType="60">foo</gnm:Cell>
239         <gnm:Cell Row="2" Col="1" ValueType="40">3</gnm:Cell>
240         <gnm:Cell Row="2" Col="2" ValueType="40">4</gnm:Cell>
241         <gnm:Cell Row="3" Col="0" ValueType="60">bar</gnm:Cell>
242         <gnm:Cell Row="3" Col="1" ValueType="40">5</gnm:Cell>
243         <gnm:Cell Row="3" Col="2" ValueType="40">6</gnm:Cell>
244       </gnm:Cells>
245     </gnm:Sheet>
246     <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE" GridColor="0:0:0">
247       <gnm:Name>Sheet2</gnm:Name>
248       <gnm:MaxCol>2</gnm:MaxCol>
249       <gnm:MaxRow>2</gnm:MaxRow>
250       <gnm:Names>
251         <gnm:Name>
252           <gnm:name>Print_Area</gnm:name>
253           <gnm:value>#REF!</gnm:value>
254           <gnm:position>A1</gnm:position>
255         </gnm:Name>
256         <gnm:Name>
257           <gnm:name>Sheet_Title</gnm:name>
258           <gnm:value>&quot;Sheet2&quot;</gnm:value>
259           <gnm:position>A1</gnm:position>
260         </gnm:Name>
261       </gnm:Names>
262       <gnm:Cols DefaultSizePts="48">
263         <gnm:ColInfo No="0" Unit="48"/>
264         <gnm:ColInfo No="1" Unit="57.75"/>
265         <gnm:ColInfo No="2" Unit="54.75"/>
266       </gnm:Cols>
267       <gnm:Rows DefaultSizePts="12.75">
268         <gnm:RowInfo No="0" Unit="13.5" Count="3"/>
269       </gnm:Rows>
270       <gnm:Cells>
271         <gnm:Cell Row="0" Col="0" ValueType="60">Comment</gnm:Cell>
272         <gnm:Cell Row="0" Col="1" ValueType="60">DOB</gnm:Cell>
273         <gnm:Cell Row="0" Col="2" ValueType="60">wealth</gnm:Cell>
274         <gnm:Cell Row="1" Col="0" ValueType="60">Sheet Two</gnm:Cell>
275         <gnm:Cell Row="1" Col="1" ValueType="60">24/5/1966</gnm:Cell>
276         <gnm:Cell Row="1" Col="2" ValueType="40" ValueFormat="_($* 0.00_);_($* (0.00);_($* &quot;-&quot;??_);_(@_)">0.02</gnm:Cell>
277         <gnm:Cell Row="2" Col="0" ValueType="60">wee</gnm:Cell>
278         <gnm:Cell Row="2" Col="1" ValueType="40" ValueFormat="dd/mm/yyyy">37145</gnm:Cell>
279         <gnm:Cell Row="2" Col="2" ValueType="40" ValueFormat="_($* 0.00_);_($* (0.00);_($* &quot;-&quot;??_);_(@_)">3000</gnm:Cell>
280       </gnm:Cells>
281     </gnm:Sheet>
282     <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE" GridColor="0:0:0">
283       <gnm:Name>Sheet3</gnm:Name>
284       <gnm:MaxCol>2</gnm:MaxCol>
285       <gnm:MaxRow>2</gnm:MaxRow>
286       <gnm:Names>
287         <gnm:Name>
288           <gnm:name>Print_Area</gnm:name>
289           <gnm:value>#REF!</gnm:value>
290           <gnm:position>A1</gnm:position>
291         </gnm:Name>
292         <gnm:Name>
293           <gnm:name>Sheet_Title</gnm:name>
294           <gnm:value>&quot;Sheet3&quot;</gnm:value>
295           <gnm:position>A1</gnm:position>
296         </gnm:Name>
297       </gnm:Names>
298       <gnm:Cols DefaultSizePts="48">
299         <gnm:ColInfo No="0" Unit="48" Count="3"/>
300       </gnm:Cols>
301       <gnm:Rows DefaultSizePts="12.75">
302         <gnm:RowInfo No="0" Unit="13.5"/>
303         <gnm:RowInfo No="1" Unit="12.75" Count="2"/>
304       </gnm:Rows>
305       <gnm:Cells>
306         <gnm:Cell Row="0" Col="0" ValueType="40">3</gnm:Cell>
307         <gnm:Cell Row="0" Col="1" ValueType="40">4</gnm:Cell>
308         <gnm:Cell Row="0" Col="2" ValueType="40">5</gnm:Cell>
309         <gnm:Cell Row="1" Col="0" ValueType="40">6</gnm:Cell>
310         <gnm:Cell Row="1" Col="1" ValueType="40">7</gnm:Cell>
311         <gnm:Cell Row="1" Col="2" ValueType="40">8</gnm:Cell>
312         <gnm:Cell Row="2" Col="0" ValueType="40">9</gnm:Cell>
313         <gnm:Cell Row="2" Col="1" ValueType="40">10</gnm:Cell>
314         <gnm:Cell Row="2" Col="2" ValueType="40">11</gnm:Cell>
315       </gnm:Cells>
316     </gnm:Sheet>
317   </gnm:Sheets>
318 </gnm:Workbook>
319 ])
320
321 AT_DATA([gnum.sps], [dnl
322 GET DATA        
323         /TYPE=GNM
324         /FILE='minimal3.gnumeric'
325         /SHEET=index 3
326         /READNAMES=off
327         .
328
329 LIST.
330 ])
331
332 AT_CHECK([pspp -O format=csv gnum.sps], [0], [dnl
333 Table: Data List
334 VAR001,VAR002,VAR003
335 3       ,4.00,5.00
336 6       ,7.00,8.00
337 9       ,10.00,11.00
338 ])
339
340
341 AT_CLEANUP
342
343
344 dnl Check for a bug where certain gnumeric files failed an assertion
345 AT_SETUP([GET DATA /TYPE=GNM assert-fail])
346 AT_SKIP_IF([test n$GNM_READ_SUPPORT != nyes])
347 AT_DATA([read.sps],[dnl
348 GET DATA 
349         /TYPE=GNM
350         /FILE='crash.gnumeric' 
351         .
352 list.
353 ])
354
355
356 AT_DATA([crash.gnumeric],[dnl
357 <?xml version="1.0" encoding="UTF-8"?>
358 <gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd">
359   <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.1">
360   </office:document-meta>
361   <gnm:SheetNameIndex>
362     <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet1</gnm:SheetName>
363   </gnm:SheetNameIndex>
364   <gnm:Sheets>
365     <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE" GridColor="0:0:0">
366       <gnm:Name>Sheet1</gnm:Name>
367       <gnm:MaxCol>2</gnm:MaxCol>
368       <gnm:MaxRow>4</gnm:MaxRow>
369       <gnm:Styles>
370         <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
371           <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
372           </gnm:Style>
373         </gnm:StyleRegion>
374       </gnm:Styles>
375       <gnm:Cells>
376         <gnm:Cell Row="1" Col="1" ValueType="60">one</gnm:Cell>
377         <gnm:Cell Row="1" Col="2" ValueType="60">two</gnm:Cell>
378         <gnm:Cell Row="2" Col="1" ValueType="40">1</gnm:Cell>
379         <gnm:Cell Row="2" Col="2" ValueType="40">2</gnm:Cell>
380         <gnm:Cell Row="3" Col="1" ValueType="40">1</gnm:Cell>
381         <gnm:Cell Row="3" Col="2" ValueType="40">2</gnm:Cell>
382         <gnm:Cell Row="4" Col="1" ValueType="40">1</gnm:Cell>
383         <gnm:Cell Row="4" Col="2" ValueType="40">2</gnm:Cell>
384       </gnm:Cells>
385     </gnm:Sheet>
386   </gnm:Sheets>
387 </gnm:Workbook>
388 ])
389
390 AT_CHECK([pspp -O format=csv read.sps], [0], [ignore])
391
392
393 AT_CLEANUP
394
395
396
397 AT_BANNER([GET DATA Spreadsheet /TYPE=ODS])
398
399 CHECK_SPREADSHEET_READER([ODS])
400
401
402 AT_SETUP([GET DATA /TYPE=ODS crash])
403 AT_SKIP_IF([test n$ODF_READ_SUPPORT != nyes])
404
405                      
406 AT_CHECK([cp $top_srcdir/tests/language/data-io/newone.ods this.ods])dnl
407
408 AT_DATA([crash.sps],[dnl
409 GET DATA /TYPE=ODS /FILE='this.ods' /CELLRANGE=RANGE 'A1:C8'  /READNAMES=ON
410 LIST.
411 ])
412
413 AT_CHECK([pspp -O format=csv crash.sps], [0], [ignore])
414
415 AT_CLEANUP
416