Fixed a bug reading gnumeric files.
[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_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 pspp.csv get-data.sps])
91 AT_CHECK([cat pspp.csv], [0], [dnl
92 Variable,Description,,Position
93 name,Format: A8,,1
94 ,Measure: Nominal,,
95 ,Display Alignment: Left,,
96 ,Display Width: 8,,
97 id,Format: F8.2,,2
98 ,Measure: Scale,,
99 ,Display Alignment: Right,,
100 ,Display Width: 8,,
101 height,Format: F8.2,,3
102 ,Measure: Scale,,
103 ,Display Alignment: Right,,
104 ,Display Width: 8,,
105
106 Table: Data List
107 name,id,height
108 fred    ,.00,23.40
109 bert    ,1.00,.56
110 charlie ,2.00,.  @&t@
111 dick    ,3.00,-34.09
112 ])
113 AT_CLEANUP
114
115 AT_SETUP([GET DATA /TYPE=$1 with missing data])
116 SPREADSHEET_TEST_PREP($1)
117 AT_DATA([get-data.sps], [dnl
118 * This sheet has no data in one of its variables
119 GET DATA /TYPE=$1 /FILE='testsheet' /READNAMES=on /SHEET=index 5.
120 DISPLAY VARIABLES.
121 LIST.
122 ])
123 AT_CHECK([pspp -o pspp.csv get-data.sps])
124 AT_CHECK([cat pspp.csv], [0], [dnl
125 Variable,Description,,Position
126 vone,Format: F8.2,,1
127 ,Measure: Scale,,
128 ,Display Alignment: Right,,
129 ,Display Width: 8,,
130 vtwo,Format: F8.2,,2
131 ,Measure: Scale,,
132 ,Display Alignment: Right,,
133 ,Display Width: 8,,
134 vthree,Format: A8,,3
135 ,Measure: Nominal,,
136 ,Display Alignment: Left,,
137 ,Display Width: 8,,
138 v4,Format: F8.2,,4
139 ,Measure: Scale,,
140 ,Display Alignment: Right,,
141 ,Display Width: 8,,
142
143 Table: Data List
144 vone,vtwo,vthree,v4
145 1.00,3.00,,5.00
146 2.00,4.00,,6.00
147 ])
148 AT_CLEANUP
149
150 AT_SETUP([GET DATA /TYPE=$1 with empty sheet])
151 SPREADSHEET_TEST_PREP($1)
152 AT_DATA([get-data.sps], [dnl
153 * This sheet is empty
154 GET DATA /TYPE=$1 /FILE='testsheet' /SHEET=name 'Empty'.
155 ])
156 AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [dnl
157 warning: Selected sheet or range of spreadsheet `testsheet' is empty.
158 ])
159 AT_CLEANUP
160
161 AT_SETUP([GET DATA /TYPE=$1 with nonexistent sheet])
162 SPREADSHEET_TEST_PREP($1)
163 AT_DATA([get-data.sps], [dnl
164 * This sheet doesnt exist.
165 GET DATA /TYPE=$1 /FILE='testsheet' /SHEET=name 'foobarxx'.
166 ])
167 AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [dnl
168 warning: Selected sheet or range of spreadsheet `testsheet' is empty.
169 ])
170 AT_CLEANUP
171 ])
172
173
174 AT_BANNER([GET DATA Spreadsheet /TYPE=GNM])
175
176 CHECK_SPREADSHEET_READER([GNM])
177
178 dnl Check for a bug where gnumeric files were interpreted incorrectly
179 AT_SETUP([GET DATA /TYPE=GNM sheet index bug])
180 AT_DATA([minimal3.gnumeric],[dnl
181 <?xml version="1.0" encoding="UTF-8"?>
182 <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">
183   <gnm:Version Epoch="1" Major="10" Minor="8" Full="1.10.8"/>
184   <gnm:SheetNameIndex>
185     <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet1</gnm:SheetName>
186     <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet2</gnm:SheetName>
187     <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet3</gnm:SheetName>
188   </gnm:SheetNameIndex>
189   <gnm:Sheets>
190     <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">
191       <gnm:Name>Sheet1</gnm:Name>
192       <gnm:MaxCol>2</gnm:MaxCol>
193       <gnm:MaxRow>3</gnm:MaxRow>
194       <gnm:Names>
195         <gnm:Name>
196           <gnm:name>Print_Area</gnm:name>
197           <gnm:value>#REF!</gnm:value>
198           <gnm:position>A1</gnm:position>
199         </gnm:Name>
200         <gnm:Name>
201           <gnm:name>Sheet_Title</gnm:name>
202           <gnm:value>&quot;Sheet1&quot;</gnm:value>
203           <gnm:position>A1</gnm:position>
204         </gnm:Name>
205       </gnm:Names>
206       <gnm:Cols DefaultSizePts="48">
207         <gnm:ColInfo No="0" Unit="94.5" HardSize="1"/>
208         <gnm:ColInfo No="1" Unit="48" Count="2"/>
209       </gnm:Cols>
210       <gnm:Rows DefaultSizePts="12.75">
211         <gnm:RowInfo No="0" Unit="13.5" Count="4"/>
212       </gnm:Rows>
213       <gnm:Cells>
214         <gnm:Cell Row="0" Col="0" ValueType="60">Name</gnm:Cell>
215         <gnm:Cell Row="0" Col="1" ValueType="60">x</gnm:Cell>
216         <gnm:Cell Row="0" Col="2" ValueType="60">y</gnm:Cell>
217         <gnm:Cell Row="1" Col="0" ValueType="60">Sheet One</gnm:Cell>
218         <gnm:Cell Row="1" Col="1" ValueType="40">1</gnm:Cell>
219         <gnm:Cell Row="1" Col="2" ValueType="40">2</gnm:Cell>
220         <gnm:Cell Row="2" Col="0" ValueType="60">foo</gnm:Cell>
221         <gnm:Cell Row="2" Col="1" ValueType="40">3</gnm:Cell>
222         <gnm:Cell Row="2" Col="2" ValueType="40">4</gnm:Cell>
223         <gnm:Cell Row="3" Col="0" ValueType="60">bar</gnm:Cell>
224         <gnm:Cell Row="3" Col="1" ValueType="40">5</gnm:Cell>
225         <gnm:Cell Row="3" Col="2" ValueType="40">6</gnm:Cell>
226       </gnm:Cells>
227     </gnm:Sheet>
228     <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">
229       <gnm:Name>Sheet2</gnm:Name>
230       <gnm:MaxCol>2</gnm:MaxCol>
231       <gnm:MaxRow>2</gnm:MaxRow>
232       <gnm:Names>
233         <gnm:Name>
234           <gnm:name>Print_Area</gnm:name>
235           <gnm:value>#REF!</gnm:value>
236           <gnm:position>A1</gnm:position>
237         </gnm:Name>
238         <gnm:Name>
239           <gnm:name>Sheet_Title</gnm:name>
240           <gnm:value>&quot;Sheet2&quot;</gnm:value>
241           <gnm:position>A1</gnm:position>
242         </gnm:Name>
243       </gnm:Names>
244       <gnm:Cols DefaultSizePts="48">
245         <gnm:ColInfo No="0" Unit="48"/>
246         <gnm:ColInfo No="1" Unit="57.75"/>
247         <gnm:ColInfo No="2" Unit="54.75"/>
248       </gnm:Cols>
249       <gnm:Rows DefaultSizePts="12.75">
250         <gnm:RowInfo No="0" Unit="13.5" Count="3"/>
251       </gnm:Rows>
252       <gnm:Cells>
253         <gnm:Cell Row="0" Col="0" ValueType="60">Comment</gnm:Cell>
254         <gnm:Cell Row="0" Col="1" ValueType="60">DOB</gnm:Cell>
255         <gnm:Cell Row="0" Col="2" ValueType="60">wealth</gnm:Cell>
256         <gnm:Cell Row="1" Col="0" ValueType="60">Sheet Two</gnm:Cell>
257         <gnm:Cell Row="1" Col="1" ValueType="60">24/5/1966</gnm:Cell>
258         <gnm:Cell Row="1" Col="2" ValueType="40" ValueFormat="_($* 0.00_);_($* (0.00);_($* &quot;-&quot;??_);_(@_)">0.02</gnm:Cell>
259         <gnm:Cell Row="2" Col="0" ValueType="60">wee</gnm:Cell>
260         <gnm:Cell Row="2" Col="1" ValueType="40" ValueFormat="dd/mm/yyyy">37145</gnm:Cell>
261         <gnm:Cell Row="2" Col="2" ValueType="40" ValueFormat="_($* 0.00_);_($* (0.00);_($* &quot;-&quot;??_);_(@_)">3000</gnm:Cell>
262       </gnm:Cells>
263     </gnm:Sheet>
264     <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">
265       <gnm:Name>Sheet3</gnm:Name>
266       <gnm:MaxCol>2</gnm:MaxCol>
267       <gnm:MaxRow>2</gnm:MaxRow>
268       <gnm:Names>
269         <gnm:Name>
270           <gnm:name>Print_Area</gnm:name>
271           <gnm:value>#REF!</gnm:value>
272           <gnm:position>A1</gnm:position>
273         </gnm:Name>
274         <gnm:Name>
275           <gnm:name>Sheet_Title</gnm:name>
276           <gnm:value>&quot;Sheet3&quot;</gnm:value>
277           <gnm:position>A1</gnm:position>
278         </gnm:Name>
279       </gnm:Names>
280       <gnm:Cols DefaultSizePts="48">
281         <gnm:ColInfo No="0" Unit="48" Count="3"/>
282       </gnm:Cols>
283       <gnm:Rows DefaultSizePts="12.75">
284         <gnm:RowInfo No="0" Unit="13.5"/>
285         <gnm:RowInfo No="1" Unit="12.75" Count="2"/>
286       </gnm:Rows>
287       <gnm:Cells>
288         <gnm:Cell Row="0" Col="0" ValueType="40">3</gnm:Cell>
289         <gnm:Cell Row="0" Col="1" ValueType="40">4</gnm:Cell>
290         <gnm:Cell Row="0" Col="2" ValueType="40">5</gnm:Cell>
291         <gnm:Cell Row="1" Col="0" ValueType="40">6</gnm:Cell>
292         <gnm:Cell Row="1" Col="1" ValueType="40">7</gnm:Cell>
293         <gnm:Cell Row="1" Col="2" ValueType="40">8</gnm:Cell>
294         <gnm:Cell Row="2" Col="0" ValueType="40">9</gnm:Cell>
295         <gnm:Cell Row="2" Col="1" ValueType="40">10</gnm:Cell>
296         <gnm:Cell Row="2" Col="2" ValueType="40">11</gnm:Cell>
297       </gnm:Cells>
298     </gnm:Sheet>
299   </gnm:Sheets>
300 </gnm:Workbook>
301 ])
302
303 AT_DATA([gnum.sps], [dnl
304 GET DATA        
305         /TYPE=GNM
306         /FILE='minimal3.gnumeric'
307         /SHEET=index 3
308         /READNAMES=off
309         .
310
311 LIST.
312 ])
313
314 AT_CHECK([pspp -O format=csv gnum.sps], [0], [dnl
315 Table: Data List
316 VAR001,VAR002,VAR003
317 3       ,4.00,5.00
318 6       ,7.00,8.00
319 9       ,10.00,11.00
320 ])
321
322
323 AT_CLEANUP
324
325 AT_BANNER([GET DATA Spreadsheet /TYPE=ODS])
326
327 CHECK_SPREADSHEET_READER([ODS])
328