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