dnl PSPP - a program for statistical analysis. dnl Copyright (C) 2017 Free Software Foundation, Inc. dnl dnl This program is free software: you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation, either version 3 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program. If not, see . dnl AT_BANNER([CHARTS Rudimentary run tests]) dnl Check that the charts work dnl Currently, "work" means that the commands which dnl should generate them, run without crashing. dnl Better tests will come later (hopefully) AT_SETUP([Examine]) AT_KEYWORDS([slow]) AT_DATA([charts.sps],[ input program. loop #i = 1 to 1000. compute x = rv.normal (56, 3) + rv.uniform (1, 1). compute y = rv.normal (6, 2) + rv.uniform (1, 2). compute A = rv.uniform (-1, 1). compute A = (A > 0). end case. end loop. end file. end input program. examine x y by a /plot = histogram, npplot spreadlevel(1) . examine x y by a /compare = groups /plot = boxplot . examine x y by a /compare = variables /plot = boxplot . ]) AT_CHECK([pspp -o pspp.txt charts.sps], [0], [ignore]) AT_CLEANUP AT_SETUP([Roc]) AT_DATA([roc.sps],[ data list list /fred * group * w *. begin data. 99 0 1000 99 1 3 97 0 908 97 1 2 95 0 904 96 1 7 94 1 9 93 0 823 93 1 12 90 0 723 90 1 42 84 0 523 84 1 98 73 0 500 75 1 180 63 0 520 69 1 320 60 0 510 60 1 418 50 0 488 54 1 432 46 0 428 43 1 528 36 0 324 36 1 612 26 0 294 28 1 682 20 0 119 20 1 719 10 0 97 10 1 809 end data. weight by w. compute bert = fred + (group < 0.5) * 45. compute charlie = fred + (group > 0.5) * 15. ROC /fred bert charlie by group (0) /plot = curve (reference). ]) AT_CHECK([pspp -o pspp.txt roc.sps], [0], [ignore]) AT_CLEANUP AT_SETUP([Scree]) AT_DATA([scree.sps],[ input program. vector vec(10). loop #i = 1 to 100. loop #v = 1 to 3. compute vec(#v) = rv.normal (0, 45). end loop. loop #v = 4 to 10. compute vec(#v) = vec (#v - 3) + rv.normal (0, 30). end loop. end case. end loop. end file. end input program. factor /variables = all /print initial /plot = eigen. ]) AT_CHECK([pspp -o pspp.txt scree.sps], [0], [ignore]) AT_CLEANUP AT_SETUP([Histogram]) AT_DATA([histogram.sps],[ * This test is designed to "torture" the code which generates histograms. It is no-crash test. However the code is rich in assertions, so any problems we hope will be caught there. input program. loop #i = 1 to 1000. compute pos = rv.normal (56, 3) + rv.uniform (1, 1). compute neg = rv.normal (-86, 2) + rv.uniform (1, 1). compute pn = rv.normal (0, 2) + rv.uniform (1, 2). compute A = rv.uniform (-1, 1). compute A = (A > 0). end case. end loop. end file. end input program. examine pos neg pn by a /plot = histogram . frequencies pos neg pn /format=notable /histogram=normal. ]) dnl The --testing-mode flag is important!! AT_CHECK([pspp --testing-mode -o pspp.txt histogram.sps], [0], [ignore]) AT_CLEANUP AT_SETUP([FREQUENCIES charts]) AT_DATA([xxx.sps],[ DATA LIST LIST /nationality (A10) religion (A20) gender (A8). BEGIN DATA. Australian Sikh Male Australian Sikh Male Australian Sikh Male Australian Sikh Male British Zoroastrian Female British Buddist Female British Buddist Female British Zoroastrian Female German Muslim Male German Christian Male German Christian Female German Christian Male German Zoroastrian Female German Sikh Female German Muslim Female German Pastafarian Female German "Jedi Knight" Female Belgian Sikh Male French Muslim Male French Muslim Male French Christian Male END DATA. FREQUENCIES /VARIABLES=religion nationality /BARCHART /PIECHART. ]) AT_CHECK([pspp -o pspp.txt xxx.sps], [0], [ignore]) AT_CLEANUP AT_SETUP([CROSSTABS charts]) AT_DATA([xxx.sps],[ DATA LIST LIST /nationality (A10) religion (A20) gender (A8). BEGIN DATA. Australian Sikh Male Australian Sikh Male Australian Sikh Male Australian Sikh Male British Zoroastrian Female British Buddist Female British Buddist Female British Zoroastrian Female German Muslim Male German Christian Male German Christian Female German Christian Male German Zoroastrian Female German Sikh Female German Muslim Female German Pastafarian Female German "Jedi Knight" Female Belgian Sikh Male French Muslim Male French Muslim Male French Christian Male END DATA. CROSSTABS /tables = nationality by religion by gender /tables = nationality by religion /tables = religion by gender /tables = nationality by religion by gender /barchart. ]) AT_CHECK([pspp -o pspp.txt xxx.sps], [0], [ignore]) AT_CLEANUP AT_SETUP([BOXPLOT Empty]) AT_DATA([bp.sps],[ DATA LIST LIST /X * Y * . BEGIN DATA 1 2 2 2 3 END DATA EXAMINE /VARIABLES = Y /PLOT = BOXPLOT. ]) AT_CHECK([pspp -o pspp.txt bp.sps], [0], [ignore]) AT_CLEANUP