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/>.
17 AT_BANNER([QUICK CLUSTER])
19 AT_SETUP([QUICK CLUSTER with small data set])
20 AT_DATA([quick-cluster.sps], [dnl
21 DATA LIST LIST /x y z.
36 /CRITERIA=CLUSTER(2) MXITER(20).
38 AT_CHECK([pspp -o pspp.csv quick-cluster.sps])
39 AT_CHECK([cat pspp.csv], [0], [dnl
40 Table: Reading free-form data from INLINE.
46 Table: Final Cluster Centers
55 Table: Number of Cases in each Cluster
62 AT_SETUP([QUICK CLUSTER with large data set])
64 AT_DATA([quick-cluster.sps], [dnl
72 QUICK CLUSTER x /CRITERIA = CLUSTER(4) NOINITIAL.
74 AT_CHECK([pspp -o pspp.csv quick-cluster.sps])
75 AT_CHECK([cat pspp.csv], [0], [dnl
76 Table: Final Cluster Centers
83 Table: Number of Cases in each Cluster
93 AT_SETUP([QUICK CLUSTER with weights])
94 AT_DATA([qc-weighted.sps], [dnl
97 compute x = mod (#i, 4).
102 compute x = mod (#i, 4).
111 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
114 AT_CHECK([pspp -o pspp-w.csv qc-weighted.sps])
117 AT_DATA([qc-unweighted.sps], [dnl
120 compute x = mod (#i, 4).
126 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
129 AT_CHECK([pspp -o pspp-unw.csv qc-unweighted.sps])
131 AT_CHECK([diff pspp-w.csv pspp-unw.csv], [0])
135 AT_SETUP([QUICK CLUSTER with listwise missing])
136 AT_DATA([quick-miss.sps], [dnl
137 data list notable list /x *.
148 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
151 AT_CHECK([pspp -o pspp-m.csv quick-miss.sps])
153 AT_DATA([quick-nmiss.sps], [dnl
154 data list notable list /x *.
164 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
167 AT_CHECK([pspp -o pspp-nm.csv quick-nmiss.sps])
169 AT_CHECK([diff pspp-m.csv pspp-nm.csv], [0])
174 AT_SETUP([QUICK CLUSTER with pairwise missing])
176 dnl This test runs two programs, which are identical except that one
177 dnl has an extra case with one missing value. Because the syntax uses
178 dnl NOINITIAL and NOUPDATE, the results should be identical except for
179 dnl the final classification.
181 AT_DATA([quick-s.sps], [dnl
182 data list notable list /x * y *.
199 /CRITERIA = CLUSTER(3) NOINITIAL NOUPDATE
203 AT_CHECK([pspp -O format=csv quick-s.sps > pspp-s.csv])
205 AT_DATA([quick-pw.sps], [dnl
206 data list notable list /x * y *.
223 /CRITERIA = CLUSTER(3) NOINITIAL NOUPDATE
229 AT_CHECK([pspp -O format=csv quick-pw.sps > pspp-pw.csv])
231 AT_CHECK([head -n 18 pspp-s.csv > top-s.csv])
232 AT_CHECK([head -n 18 pspp-pw.csv > top-pw.csv])
233 AT_CHECK([diff top-s.csv top-pw.csv])
236 AT_CHECK([grep Valid pspp-s.csv], [0], [Valid,,11
239 AT_CHECK([grep Valid pspp-pw.csv], [0], [Valid,,12
247 AT_SETUP([QUICK CLUSTER crash on bad cluster quantity])
248 AT_DATA([badn.sps], [dnl
249 data list notable list /x * y *.
256 /CRITERIA = CLUSTER(0)
260 AT_CHECK([pspp -O format=csv badn.sps], [1], [ignore])
264 AT_SETUP([QUICK CLUSTER infinite loop on bad command name])
265 AT_DATA([quick-cluster.sps], [dnl
266 data list notable list /x y.
272 QUICK CLUSTER x y /UNSUPPORTED.
274 AT_CHECK([pspp -O format=csv quick-cluster.sps], [1], [dnl
275 quick-cluster.sps:7.20-7.30: error: QUICK CLUSTER: Syntax error at `UNSUPPORTED'.
281 AT_SETUP([QUICK CLUSTER /PRINT subcommand])
282 AT_DATA([quick-cluster.sps], [dnl
283 data list notable list /cluster (A8) x (F) y (F).
345 /CRITERIA=CLUSTERS(3)
346 /PRINT=INITIAL CLUSTER.
349 AT_CHECK([pspp -O format=csv quick-cluster.sps], [0], [dnl
350 Table: Initial Cluster Centers
358 Table: Final Cluster Centers
366 Table: Number of Cases in each Cluster
372 Table: Cluster Membership
436 dnl Test for a crash which happened on bad input syntax
437 AT_SETUP([QUICK CLUSTER -- Empty Parentheses])
439 AT_DATA([empty-parens.sps], [dnl
440 data list notable list /x * y *.
447 /CRITERIA = CONVERGE()
451 AT_CHECK([pspp -o pspp.csv empty-parens.sps], [1], [ignore])