1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
19 m4_define([DEFINE_MRSETS_DATA],
20 [DATA LIST NOTABLE /w x y z 1-4 a b c d 5-8 (a).
26 m4_define([DEFINE_MRSETS],
30 w 'duplicate variable label'
32 z 'Duplicate variable label'.
35 /y 1 'duplicate Value label'
36 /z 1 'duplicate value Label'
37 /a b c d 'a' 'burger' 'b' 'fries' 'c' 'shake' 'd' 'taco'.
43 LABEL='First multiple dichotomy group'
44 CATEGORYLABELS=VARLABELS
48 CATEGORYLABELS=COUNTEDVALUES
53 CATEGORYLABELS=COUNTEDVALUES
61 LABEL='First multiple category group'
67 m4_define([DEFINE_MRSETS_OUTPUT],
68 [mrsets.sps:25: warning: MRSETS: Variables w and z specified as part of multiple dichotomy group $a have the same variable label. Categories represented by these variables will not be distinguishable in output.
70 mrsets.sps:29: warning: MRSETS: Variable z specified as part of multiple dichotomy group $b (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output.
72 mrsets.sps:29: warning: MRSETS: Variable y specified as part of multiple dichotomy group $b (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output.
74 mrsets.sps:34: warning: MRSETS: Variable x specified as part of multiple dichotomy group $c (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output.
76 mrsets.sps:34: warning: MRSETS: Variables y and z specified as part of multiple dichotomy group $c (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the group's counted value. These categories will not be distinguishable in output.
78 mrsets.sps:38: warning: MRSETS: MDGROUP subcommand for group $d specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE.
80 "mrsets.sps:41: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but w and y (and possibly others) in multiple category group $e have different value labels for value 1."
82 "mrsets.sps:42: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but a and c (and possibly others) in multiple category group $f have different value labels for value b."
85 m4_define([MRSETS_DISPLAY_OUTPUT], [dnl
86 Table: Multiple Response Sets
87 Name,Label,Encoding,Counted Value,Member Variables
88 $a,First multiple dichotomy group,Dichotomies,5,"w
92 $b,,Dichotomies,123,"z
94 $c,duplicate variable label,Dichotomies,1,"w
102 $e,First multiple category group,Categories,,"w
112 AT_SETUP([MRSETS add, display, delete])
113 AT_DATA([mrsets.sps],
123 AT_CHECK([pspp -o - -O format=csv -o mrsets.csv -o mrsets.txt -o mrsets.pdf mrsets.sps], [0],
124 [DEFINE_MRSETS_OUTPUT
125 Table: Multiple Response Sets
126 Name,Label,Encoding,Counted Value,Member Variables
127 $a,First multiple dichotomy group,Dichotomies,5,"w
132 Table: Multiple Response Sets
133 Name,Label,Encoding,Counted Value,Member Variables
134 $a,First multiple dichotomy group,Dichotomies,5,"w
138 $b,,Dichotomies,123,"z
140 $c,duplicate variable label,Dichotomies,1,"w
148 $e,First multiple category group,Categories,,"w
157 Table: Multiple Response Sets
158 Name,Label,Encoding,Counted Value,Member Variables
159 $a,First multiple dichotomy group,Dichotomies,5,"w
163 $b,,Dichotomies,123,"z
169 $e,First multiple category group,Categories,,"w
178 mrsets.sps:50: note: MRSETS: The active dataset dictionary does not contain any multiple response sets.
182 AT_SETUP([MRSETS read and write])
183 AT_DATA([mrsets.sps],
185 SAVE OUTFILE='mrsets.sav'.
187 AT_CHECK([pspp -O format=csv mrsets.sps], [0], [DEFINE_MRSETS_OUTPUT])
188 AT_DATA([mrsets2.sps],
189 [GET FILE='mrsets.sav'.
190 MRSETS /DISPLAY NAME=ALL.
192 AT_CHECK([pspp -O format=csv mrsets2.sps], [0], [MRSETS_DISPLAY_OUTPUT],
196 AT_SETUP([MRSETS names must begin with $])
197 AT_DATA([mrsets.sps],
199 MRSETS /MCGROUP NAME=x.
201 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
202 [mrsets.sps:6: error: MRSETS: x is not a valid name for a multiple response set. Multiple response set names must begin with `$'.
206 AT_SETUP([MRSETS must have at least 2 variables])
207 AT_DATA([mrsets.sps],
209 MRSETS /MCGROUP NAME=$x VARIABLES=a.
211 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
212 ["mrsets.sps:6: error: MRSETS: VARIABLES specified only variable a on MCGROUP, but at least two variables are required."
216 AT_SETUP([MRSETS does not allow noninteger VALUE])
217 AT_DATA([mrsets.sps],
219 MRSETS /MDGROUP VALUE=1.5.
221 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
222 [mrsets.sps:6: error: MRSETS: Numeric VALUE must be an integer.
226 AT_SETUP([MRSETS requires NAME to define a group])
227 AT_DATA([mrsets.sps],
229 MRSETS /MCGROUP VARIABLES=a b c.
231 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
232 [mrsets.sps:6.32: error: MRSETS: Syntax error at end of command: Required MCGROUP specification missing from NAME subcommand.
236 AT_SETUP([MRSETS requires VARIABLES to define a group])
237 AT_DATA([mrsets.sps],
239 MRSETS /MCGROUP NAME=$Mcgroup.
241 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
242 [mrsets.sps:6.30: error: MRSETS: Syntax error at end of command: Required MCGROUP specification missing from VARIABLES subcommand.
246 AT_SETUP([MRSETS variables must be same type])
247 AT_DATA([mrsets.sps],
249 MRSETS /MCGROUP NAME=$mygroup VARIABLES=a b x y.
251 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
252 [mrsets.sps:6: error: MRSETS: a and x are not the same type. All variables in this variable list must be of the same type. x will be omitted from the list.
254 mrsets.sps:6: error: MRSETS: a and y are not the same type. All variables in this variable list must be of the same type. y will be omitted from the list.
258 AT_SETUP([MRSETS variables and VALUE must be same type])
259 AT_DATA([mrsets.sps],
261 MRSETS /MDGROUP NAME=$group1 VARIABLES=a b VALUE=1.
262 MRSETS /MDGROUP NAME=$group2 VARIABLES=x y VALUE='abc'.
264 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
265 ["mrsets.sps:6: error: MRSETS: MDGROUP subcommand for group $group1 specifies a string VALUE, but the variables specified for this group are numeric."
267 "mrsets.sps:7: error: MRSETS: MDGROUP subcommand for group $group2 specifies a string VALUE, but the variables specified for this group are numeric."
271 AT_SETUP([MRSETS VALUE must not be too wide])
272 AT_DATA([mrsets.sps],
274 MRSETS /MDGROUP NAME=$group1 VARIABLES=a b VALUE='abc'.
276 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
277 ["mrsets.sps:6: error: MRSETS: VALUE string on MDGROUP subcommand for group $group1 is 3 bytes long, but it must be no longer than the narrowest variable in the group, which is a with a width of 1 bytes."
281 AT_SETUP([MRSETS LABEL and LABELSOURCE are exclusive])
282 AT_DATA([mrsets.sps],
284 MRSETS /MDGROUP NAME=$group1 VARIABLES=a b VALUE='a'
285 LABEL='label' LABELSOURCE=VARLABEL.
287 AT_CHECK([pspp -O format=csv mrsets.sps], [0],
288 [mrsets.sps:7: warning: MRSETS: MDGROUP subcommand for group $group1 specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE.
292 AT_SETUP([MRSETS DISPLAY or DELETE unknown group])
293 AT_DATA([mrsets.sps],
295 [MRSETS /DISPLAY NAME=[$x].
296 MRSETS /DELETE NAME=[$y].
298 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
299 [mrsets.sps:6: error: MRSETS: No multiple response set named $x.
301 mrsets.sps:7: error: MRSETS: No multiple response set named $y.