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])
63 AT_DATA([quick-cluster.sps], [dnl
71 QUICK CLUSTER x /CRITERIA = CLUSTER(4) NOINITIAL.
73 AT_CHECK([pspp -o pspp.csv quick-cluster.sps])
74 AT_CHECK([cat pspp.csv], [0], [dnl
75 Table: Final Cluster Centers
82 Table: Number of Cases in each Cluster
92 AT_SETUP([QUICK CLUSTER with weights])
93 AT_DATA([qc-weighted.sps], [dnl
96 compute x = mod (#i, 4).
101 compute x = mod (#i, 4).
110 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
113 AT_CHECK([pspp -o pspp-w.csv qc-weighted.sps])
116 AT_DATA([qc-unweighted.sps], [dnl
119 compute x = mod (#i, 4).
125 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
128 AT_CHECK([pspp -o pspp-unw.csv qc-unweighted.sps])
130 AT_CHECK([diff pspp-w.csv pspp-unw.csv], [0])
134 AT_SETUP([QUICK CLUSTER with listwise missing])
135 AT_DATA([quick-miss.sps], [dnl
136 data list notable list /x *.
147 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
150 AT_CHECK([pspp -o pspp-m.csv quick-miss.sps])
152 AT_DATA([quick-nmiss.sps], [dnl
153 data list notable list /x *.
163 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
166 AT_CHECK([pspp -o pspp-nm.csv quick-nmiss.sps])
168 AT_CHECK([diff pspp-m.csv pspp-nm.csv], [0])
173 AT_SETUP([QUICK CLUSTER with pairwise missing])
175 dnl This test runs two programs, which are identical except that one
176 dnl has an extra case with one missing value. Becuase the syntax uses
177 dnl NOINITIAL and NOUPDATE, the results should be identical except for
178 dnl the final classification.
180 AT_DATA([quick-s.sps], [dnl
181 data list notable list /x * y *.
198 /CRITERIA = CLUSTER(3) NOINITIAL NOUPDATE
202 AT_CHECK([pspp -O format=csv quick-s.sps > pspp-s.csv])
204 AT_DATA([quick-pw.sps], [dnl
205 data list notable list /x * y *.
222 /CRITERIA = CLUSTER(3) NOINITIAL NOUPDATE
228 AT_CHECK([pspp -O format=csv quick-pw.sps > pspp-pw.csv])
230 AT_CHECK([head -n 18 pspp-s.csv > top-s.csv])
231 AT_CHECK([head -n 18 pspp-pw.csv > top-pw.csv])
232 AT_CHECK([diff top-s.csv top-pw.csv])
235 AT_CHECK([grep Valid pspp-s.csv], [0], [Valid,,11
238 AT_CHECK([grep Valid pspp-pw.csv], [0], [Valid,,12
246 AT_SETUP([QUICK CLUSTER crash on bad cluster quantity])
247 AT_DATA([badn.sps], [dnl
248 data list notable list /x * y *.
255 /CRITERIA = CLUSTER(0)
259 AT_CHECK([pspp -O format=csv badn.sps], [1], [ignore])
263 AT_SETUP([QUICK CLUSTER infinite loop on bad command name])
264 AT_DATA([quick-cluster.sps], [dnl
265 data list notable list /x y.
271 QUICK CLUSTER x y /UNSUPPORTED.
273 AT_CHECK([pspp -O format=csv quick-cluster.sps], [1], [dnl
274 quick-cluster.sps:7.20-7.30: error: QUICK CLUSTER: Syntax error at `UNSUPPORTED'.
280 AT_SETUP([QUICK CLUSTER /PRINT subcommand])
281 AT_DATA([quick-cluster.sps], [dnl
282 data list notable list /cluster (A8) x (F) y (F).
344 /CRITERIA=CLUSTERS(3)
345 /PRINT=INITIAL CLUSTER.
348 AT_CHECK([pspp -O format=csv quick-cluster.sps], [0], [dnl
349 Table: Initial Cluster Centers
357 Table: Final Cluster Centers
365 Table: Number of Cases in each Cluster
371 Table: Cluster Membership
435 dnl Test for a crash which happened on bad input syntax
436 AT_SETUP([QUICK CLUSTER -- Empty Parentheses])
438 AT_DATA([empty-parens.sps], [dnl
439 data list notable list /x * y *.
446 /CRITERIA = CONVERGE()
450 AT_CHECK([pspp -o pspp.csv empty-parens.sps], [1], [ignore])