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
53 Table: Number of Cases in each Cluster
61 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
80 Table: Number of Cases in each Cluster
91 AT_SETUP([QUICK CLUSTER with weights])
92 AT_DATA([qc-weighted.sps], [dnl
95 compute x = mod (#i, 4).
100 compute x = mod (#i, 4).
109 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
112 AT_CHECK([pspp -o pspp-w.csv qc-weighted.sps])
115 AT_DATA([qc-unweighted.sps], [dnl
118 compute x = mod (#i, 4).
124 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
127 AT_CHECK([pspp -o pspp-unw.csv qc-unweighted.sps])
129 AT_CHECK([diff pspp-w.csv pspp-unw.csv], [0])
133 AT_SETUP([QUICK CLUSTER with listwise missing])
134 AT_DATA([quick-miss.sps], [dnl
135 data list notable list /x *.
146 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
149 AT_CHECK([pspp -o pspp-m.csv quick-miss.sps])
151 AT_DATA([quick-nmiss.sps], [dnl
152 data list notable list /x *.
162 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
165 AT_CHECK([pspp -o pspp-nm.csv quick-nmiss.sps])
167 AT_CHECK([diff pspp-m.csv pspp-nm.csv], [0])
172 AT_SETUP([QUICK CLUSTER with pairwise missing])
174 dnl This test runs two programs, which are identical except that one
175 dnl has an extra case with one missing value. Because the syntax uses
176 dnl NOINITIAL and NOUPDATE, the results should be identical except for
177 dnl the final classification.
179 AT_DATA([quick-s.sps], [dnl
180 data list notable list /x * y *.
197 /CRITERIA = CLUSTER(3) NOINITIAL NOUPDATE
201 AT_CHECK([pspp -O format=csv quick-s.sps > pspp-s.csv])
203 AT_DATA([quick-pw.sps], [dnl
204 data list notable list /x * y *.
221 /CRITERIA = CLUSTER(3) NOINITIAL NOUPDATE
227 AT_CHECK([pspp -O format=csv quick-pw.sps > pspp-pw.csv])
229 AT_CHECK([head -n 13 pspp-s.csv > top-s.csv])
230 AT_CHECK([head -n 13 pspp-pw.csv > top-pw.csv])
231 AT_CHECK([diff top-s.csv top-pw.csv])
234 AT_CHECK([grep Valid pspp-s.csv], [0], [Valid,,11
237 AT_CHECK([grep Valid pspp-pw.csv], [0], [Valid,,12
245 AT_SETUP([QUICK CLUSTER crash on bad cluster quantity])
246 AT_DATA([badn.sps], [dnl
247 data list notable list /x * y *.
254 /CRITERIA = CLUSTER(0)
258 AT_CHECK([pspp -O format=csv badn.sps], [1], [ignore])
262 AT_SETUP([QUICK CLUSTER infinite loop on bad command name])
263 AT_DATA([quick-cluster.sps], [dnl
264 data list notable list /x y.
270 QUICK CLUSTER x y /UNSUPPORTED.
272 AT_CHECK([pspp -O format=csv quick-cluster.sps], [1], [dnl
273 quick-cluster.sps:7.20-7.30: error: QUICK CLUSTER: Syntax error at `UNSUPPORTED'.
279 AT_SETUP([QUICK CLUSTER /PRINT subcommand])
280 AT_DATA([quick-cluster.sps], [dnl
281 data list notable list /cluster (A8) x y (F8.0).
343 /CRITERIA=CLUSTERS(3)
344 /PRINT=INITIAL CLUSTER.
347 AT_CHECK([pspp -O format=csv quick-cluster.sps], [0], [dnl
348 Table: Initial Cluster Centers
354 Table: Final Cluster Centers
360 Table: Number of Cases in each Cluster
367 Table: Cluster Membership
431 dnl Test for a crash which happened on bad input syntax
432 AT_SETUP([QUICK CLUSTER -- Empty Parentheses])
434 AT_DATA([empty-parens.sps], [dnl
435 data list notable list /x * y *.
442 /CRITERIA = CONVERGE()
446 AT_CHECK([pspp -o pspp.csv empty-parens.sps], [1], [ignore])