1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017, 2020 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([MATRIX DATA])
19 dnl Keep this test in sync with Example 1 in doc/matrices.texi.
20 AT_SETUP([MATRIX DATA - LOWER DIAGONAL with ROWTYPE_])
21 AT_DATA([matrix-data.sps], [dnl
23 VARIABLES=ROWTYPE_ var01 TO var08
24 /FILE='matrix-data.txt'.
25 FORMATS var01 TO var08(F5.2).
28 AT_DATA([matrix-data.txt], [dnl
29 MEAN 24.3 5.4 69.7 20.1 13.4 2.7 27.9 3.7
30 SD 5.7 1.5 23.5 5.8 2.8 4.5 5.4 1.5
31 N 92 92 92 92 92 92 92 92
35 "CORR" .36 .31 -.14 1.00
36 COR .27 .16 -.12 .22 1.00
37 CORR .33 .15 -.17 .24 .21 1.00
38 CORR .50 .29 -.20 .32 .12 .38 1.00
39 CORR .17 .29 -.05 .20 .27 .20 .04 1.00
42 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
44 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
45 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
46 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
47 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
48 CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
49 CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
50 CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
51 CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
52 CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
53 CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
54 CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
55 CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
59 AT_SETUP([MATRIX DATA - UPPER DIAGONAL with ROWTYPE_])
60 AT_DATA([matrix-data.sps], [dnl
62 variables = rowtype_ var01 var02 var03 var04
63 /format = upper diagonal.
78 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
80 ROWTYPE_,VARNAME_,var01,var02,var03,var04
81 MEAN,,34.0000,35.0000,36.0000,37.0000
82 STDDEV,,22.0000,11.0000,55.0000,66.0000
83 N,,100.0000,101.0000,102.0000,103.0000
84 CORR,var01,1.0000,9.0000,8.0000,7.0000
85 CORR,var02,9.0000,1.0000,6.0000,5.0000
86 CORR,var03,8.0000,6.0000,1.0000,4.0000
87 CORR,var04,7.0000,5.0000,4.0000,1.0000
91 AT_SETUP([MATRIX DATA - FULL with ROWTYPE_])
92 dnl Just for fun, this one is in a different case.
93 AT_DATA([matrix-data.sps], [dnl
95 variables = ROWTYPE_ var01 var02 var03 var04
96 /format = full diagonal.
111 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
113 ROWTYPE_,VARNAME_,var01,var02,var03,var04
114 MEAN,,34.0000,35.0000,36.0000,37.0000
115 STDDEV,,22.0000,11.0000,55.0000,66.0000
116 N,,100.0000,101.0000,102.0000,103.0000
117 CORR,var01,1.0000,9.0000,8.0000,7.0000
118 CORR,var02,9.0000,1.0000,6.0000,5.0000
119 CORR,var03,8.0000,6.0000,1.0000,4.0000
120 CORR,var04,7.0000,5.0000,4.0000,1.0000
125 AT_SETUP([MATRIX DATA - UPPER NODIAGONAL with ROWTYPE_])
126 AT_DATA([matrix-data.sps], [dnl
128 variables = rowtype_ var01 var02 var03 var04
129 /format = upper nodiagonal.
143 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
145 ROWTYPE_,VARNAME_,var01,var02,var03,var04
146 MEAN,,34.0000,35.0000,36.0000,37.0000
147 STDDEV,,22.0000,11.0000,55.0000,66.0000
148 N,,100.0000,101.0000,102.0000,103.0000
149 CORR,var01,1.0000,9.0000,8.0000,7.0000
150 CORR,var02,9.0000,1.0000,6.0000,5.0000
151 CORR,var03,8.0000,6.0000,1.0000,4.0000
152 CORR,var04,7.0000,5.0000,4.0000,1.0000
156 dnl Keep this test in sync with Example 2 in doc/matrices.texi.
157 AT_SETUP([MATRIX DATA - UPPER NODIAGONAL with ROWTYPE_ - 2])
158 AT_DATA([matrix-data.sps], [dnl
160 VARIABLES=ROWTYPE_ var01 TO var08
161 /FORMAT=UPPER NODIAGONAL.
163 MEAN 24.3 5.4 69.7 20.1 13.4 2.7 27.9 3.7
164 SD 5.7 1.5 23.5 5.8 2.8 4.5 5.4 1.5
165 N 92 92 92 92 92 92 92 92
166 CORR .17 .50 -.33 .27 .36 -.22 .18
167 CORR .29 .29 -.20 .32 .12 .38
168 CORR .05 .20 -.15 .16 .21
169 CORR .20 .32 -.17 .12
174 FORMATS var01 TO var08(F6.2).
177 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
179 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
180 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
181 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
182 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
183 CORR,var01,1.00,.17,.50,-.33,.27,.36,-.22,.18
184 CORR,var02,.17,1.00,.29,.29,-.20,.32,.12,.38
185 CORR,var03,.50,.29,1.00,.05,.20,-.15,.16,.21
186 CORR,var04,-.33,.29,.05,1.00,.20,.32,-.17,.12
187 CORR,var05,.27,-.20,.20,.20,1.00,.27,.12,-.24
188 CORR,var06,.36,.32,-.15,.32,.27,1.00,-.20,-.38
189 CORR,var07,-.22,.12,.16,-.17,.12,-.20,1.00,.04
190 CORR,var08,.18,.38,.21,.12,-.24,-.38,.04,1.00
194 AT_SETUP([MATRIX DATA - LOWER NODIAGONAL with ROWTYPE_])
195 AT_DATA([matrix-data.sps], [dnl
197 variables = rowtype_ var01 var02 var03 var04
198 /format = lower nodiagonal
213 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
214 matrix-data.sps:4: warning: MATRIX DATA: CELLS is ignored when VARIABLES includes ROWTYPE_
217 ROWTYPE_,VARNAME_,var01,var02,var03,var04
218 MEAN,,34.0000,35.0000,36.0000,37.0000
219 STDDEV,,22.0000,11.0000,55.0000,66.0000
220 N,,100.0000,101.0000,102.0000,103.0000
221 CORR,var01,1.0000,9.0000,8.0000,7.0000
222 CORR,var02,9.0000,1.0000,6.0000,5.0000
223 CORR,var03,8.0000,6.0000,1.0000,4.0000
224 CORR,var04,7.0000,5.0000,4.0000,1.0000
228 AT_SETUP([MATRIX DATA - split data])
229 AT_DATA([matrix-data.sps], [dnl
231 variables = s1 s2 rowtype_ var01 var02 var03
235 8 0 mean 21.4 5.0 72.9
241 8 1 mean 11.4 1.0 52.9
254 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
256 Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
257 s1,1,Scale,Input,8,Right,F4.0,F4.0
258 s2,2,Scale,Input,8,Right,F4.0,F4.0
259 ROWTYPE_,3,Nominal,Input,8,Left,A8,A8
260 VARNAME_,4,Nominal,Input,8,Left,A8,A8
261 var01,5,Scale,Input,8,Right,F10.4,F10.4
262 var02,6,Scale,Input,8,Right,F10.4,F10.4
263 var03,7,Scale,Input,8,Right,F10.4,F10.4
271 s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
272 8,0,MEAN,,21.4000,5.0000,72.9000
273 8,0,STDDEV,,6.5000,1.6000,22.8000
274 8,0,N,,106.0000,106.0000,106.0000
275 8,0,CORR,var01,1.0000,.4100,-.1600
276 8,0,CORR,var02,.4100,1.0000,-.2200
277 8,0,CORR,var03,-.1600,-.2200,1.0000
285 s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
286 8,1,MEAN,,11.4000,1.0000,52.9000
287 8,1,STDDEV,,9.5000,8.6000,12.8000
288 8,1,N,,10.0000,11.0000,12.0000
289 8,1,CORR,var01,1.0000,.5100,.3600
290 8,1,CORR,var02,.5100,1.0000,-.4100
291 8,1,CORR,var03,.3600,-.4100,1.0000
296 dnl Keep this test in sync with Example 4 in doc/matrices.texi.
297 AT_SETUP([MATRIX DATA - split data - 2])
298 AT_DATA([matrix-data.sps], [dnl
300 VARIABLES=s1 ROWTYPE_ var01 TO var04
319 FORMATS var01 TO var04(F5.1).
323 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
329 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
330 0,MEAN,,34.0,35.0,36.0,37.0
331 0,STDDEV,,22.0,11.0,55.0,66.0
332 0,N,,99.0,98.0,99.0,92.0
333 0,CORR,var01,1.0,.9,.8,.7
334 0,CORR,var02,.9,1.0,.6,.5
335 0,CORR,var03,.8,.6,1.0,.4
336 0,CORR,var04,.7,.5,.4,1.0
343 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
344 1,MEAN,,44.0,45.0,34.0,39.0
345 1,STDDEV,,23.0,15.0,51.0,46.0
346 1,N,,98.0,34.0,87.0,23.0
347 1,CORR,var01,1.0,.2,.3,.4
348 1,CORR,var02,.2,1.0,.5,.6
349 1,CORR,var03,.3,.5,1.0,.7
350 1,CORR,var04,.4,.6,.7,1.0
354 dnl Keep this test in sync with Example 5 in doc/matrices.texi.
355 AT_SETUP([MATRIX DATA - factor variables])
356 AT_DATA([matrix-data.sps], [dnl
358 VARIABLES=ROWTYPE_ f1 var01 TO var04
372 FORMATS var01 TO var04(F5.1).
376 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
378 ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
379 MEAN,0,,34.0,35.0,36.0,37.0
380 STDDEV,0,,22.0,11.0,55.0,66.0
381 N,0,,99.0,98.0,99.0,92.0
382 MEAN,1,,44.0,45.0,34.0,39.0
383 STDDEV,1,,23.0,15.0,51.0,46.0
384 N,1,,98.0,34.0,87.0,23.0
385 CORR,.,var01,1.0,.9,.8,.7
386 CORR,.,var02,.9,1.0,.6,.5
387 CORR,.,var03,.8,.6,1.0,.4
388 CORR,.,var04,.7,.5,.4,1.0
392 AT_SETUP([MATRIX DATA - bad ROWTYPE_])
393 AT_DATA([matrix-data.sps], [dnl
395 variables = rowtype_ var01 var02 var03 var04
396 /format = upper diagonal.
408 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
409 "matrix-data.sps:6.1-6.4: error: Unknown row type ""cork""."
413 AT_SETUP([MATRIX DATA - unexpected ROWTYPE_])
414 AT_DATA([matrix-data.sps], [dnl
416 variables = rowtype_ f1 var01 var02 var03 var04
419 /format = upper diagonal.
438 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
439 matrix-data.sps:12: warning: Data contains pooled row type STDDEV not included in CONTENTS.
441 matrix-data.sps:14: warning: Data contains with-factors row type CORR not included in CONTENTS.
444 ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
445 CORR,.,var01,1.0000,9.0000,8.0000,7.0000
446 CORR,.,var02,9.0000,1.0000,6.0000,5.0000
447 CORR,.,var03,8.0000,6.0000,1.0000,4.0000
448 CORR,.,var04,7.0000,5.0000,4.0000,1.0000
449 STDDEV,.,,1.0000,2.0000,3.0000,4.0000
450 CORR,0,var01,1.0000,9.0000,8.0000,7.0000
451 CORR,0,var02,9.0000,1.0000,6.0000,5.0000
452 CORR,0,var03,8.0000,6.0000,1.0000,4.0000
453 CORR,0,var04,7.0000,5.0000,4.0000,1.0000
454 STDDEV,0,,1.0000,2.0000,3.0000,4.0000
458 AT_SETUP([MATRIX DATA - bad number])
459 AT_DATA([matrix-data.sps], [dnl
461 variables = rowtype_ var01 var02 var03 var04
462 /format = upper diagonal.
474 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
475 matrix-data.sps:7.15: error: Field contents are not numeric.
478 ROWTYPE_,VARNAME_,var01,var02,var03,var04
479 CORR,var01,1.0000,9.0000,8.0000,7.0000
480 CORR,var02,9.0000,1.0000,. ,5.0000
481 CORR,var03,8.0000,. ,1.0000,4.0000
482 CORR,var04,7.0000,5.0000,4.0000,1.0000
486 AT_SETUP([MATRIX DATA - long variable names])
487 AT_DATA([matrix-data.sps], [dnl
489 variables = rowtype_ var01 var_two variable_number_three variableFour
490 /format = upper diagonal.
495 n_vector 100 101 102 103
505 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
507 ROWTYPE_,VARNAME_,var01,var_two,variable_number_three,variableFour
508 MEAN,,34.0000,35.0000,36.0000,37.0000
509 STDDEV,,22.0000,11.0000,55.0000,66.0000
510 N,,100.0000,101.0000,102.0000,103.0000
511 CORR,var01,1.0000,9.0000,8.0000,7.0000
512 CORR,var_two,9.0000,1.0000,6.0000,5.0000
513 CORR,variable_number_three,8.0000,6.0000,1.0000,4.0000
514 CORR,variableFour,7.0000,5.0000,4.0000,1.0000
518 AT_SETUP([MATRIX DATA - read integrity])
519 dnl Check that matrices presented are read correctly.
520 dnl The example below is an unlikely one since all
521 dnl covariance/correlation matrices must be symmetrical
522 dnl but it serves a purpose for this test.
523 AT_DATA([matrix-reader.sps], [dnl
525 variables = rowtype_ var01 to var9
530 sd 100 200 300 400 500 600 700 800 900
531 corr 11 12 13 14 15 16 17 18 19
532 corr 21 22 23 24 25 26 27 28 29
533 corr 31 32 33 34 35 36 37 38 39
534 corr 41 42 43 44 45 46 47 48 49
535 corr 51 52 53 54 55 56 57 58 59
536 corr 61 62 63 64 65 66 67 68 69
537 corr 71 72 73 74 75 76 77 78 79
538 corr 81 82 83 84 85 86 87 88 89
539 corr 91 92 93 94 95 96 97 98 99
542 FORMATS var01 to var09(F3.0).
544 factor /matrix = in (corr = *)
545 /analysis var02 var04 var06
546 /method = correlation
551 AT_CHECK([pspp --testing-mode -O format=csv matrix-reader.sps], [0], [dnl
552 Table: Debug Matrix Reader
553 ,,,var01,var02,var03,var04,var05,var06,var07,var08,var09
554 1,Correlation,var01,11.000,12.000,13.000,14.000,15.000,16.000,17.000,18.000,19.000
555 ,,var02,21.000,22.000,23.000,24.000,25.000,26.000,27.000,28.000,29.000
556 ,,var03,31.000,32.000,33.000,34.000,35.000,36.000,37.000,38.000,39.000
557 ,,var04,41.000,42.000,43.000,44.000,45.000,46.000,47.000,48.000,49.000
558 ,,var05,51.000,52.000,53.000,54.000,55.000,56.000,57.000,58.000,59.000
559 ,,var06,61.000,62.000,63.000,64.000,65.000,66.000,67.000,68.000,69.000
560 ,,var07,71.000,72.000,73.000,74.000,75.000,76.000,77.000,78.000,79.000
561 ,,var08,81.000,82.000,83.000,84.000,85.000,86.000,87.000,88.000,89.000
562 ,,var09,91.000,92.000,93.000,94.000,95.000,96.000,97.000,98.000,99.000
563 ,N,Value,1.000,2.000,3.000,4.000,5.000,6.000,7.000,8.000,9.000
564 ,Mean,Value,.000,.000,.000,.000,.000,.000,.000,.000,.000
565 ,Standard Deviation,Value,100.000,200.000,300.000,400.000,500.000,600.000,700.000,800.000,900.000
568 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08,var09
569 N,,1,2,3,4,5,6,7,8,9
570 STDDEV,,100,200,300,400,500,600,700,800,900
571 CORR,var01,11,12,13,14,15,16,17,18,19
572 CORR,var02,21,22,23,24,25,26,27,28,29
573 CORR,var03,31,32,33,34,35,36,37,38,39
574 CORR,var04,41,42,43,44,45,46,47,48,49
575 CORR,var05,51,52,53,54,55,56,57,58,59
576 CORR,var06,61,62,63,64,65,66,67,68,69
577 CORR,var07,71,72,73,74,75,76,77,78,79
578 CORR,var08,81,82,83,84,85,86,87,88,89
579 CORR,var09,91,92,93,94,95,96,97,98,99
581 Table: Correlation Matrix
583 Correlation,var02,22.000,24.000,26.000
584 ,var04,42.000,44.000,46.000
585 ,var06,62.000,64.000,66.000
587 Table: Component Matrix
596 AT_SETUP([MATRIX DATA - too many rows])
597 dnl Test for a crash which occurred when the matrix had more rows declared
598 dnl than variables to hold them.
599 AT_DATA([matrix-data.sps], [dnl
602 var01 var02 var03 var04
603 / format = upper diagonal .
605 mean 21.4 5.0 72.9 17.4
608 corr 1.00 .32 .48 .28
609 corr 1.00 .72 .54 .44
610 corr 1.00 .50 .59 .64
611 corr 1.00 .62 .49 -.30
612 corr 1.00 .56 -.38 .52
613 corr 1.00 -.73 .91 .80
618 FORMATS var01 TO var04 (F6.2).
622 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
623 matrix-data.sps:10.29-10.31: error: Extraneous data expecting end of line.
625 matrix-data.sps:11.24-11.31: error: Extraneous data expecting end of line.
627 matrix-data.sps:12.19-12.32: error: Extraneous data expecting end of line.
629 matrix-data.sps:18: error: Matrix CORR had 9 rows but 4 rows were expected.
632 ROWTYPE_,VARNAME_,var01,var02,var03,var04
633 MEAN,,21.40,5.00,72.90,17.40
634 STDDEV,,6.50,1.60,22.80,5.70
635 N,,106.00,106.00,106.00,106.00
636 CORR,var01,1.00,.32,.48,.28
637 CORR,var02,.32,1.00,.72,.54
638 CORR,var03,.48,.72,1.00,.50
639 CORR,var04,.28,.54,.50,1.00
643 AT_SETUP([MATRIX DATA - too few rows])
644 AT_DATA([matrix-data.sps], [dnl
646 variables = rowtype_ s1 var01 var02 var03 var04
648 /format = upper diagonal
649 /file='matrix-data.txt'.
650 FORMATS var01 TO var04 (F6.2).
653 AT_DATA([matrix-data.txt], [dnl
654 mean 1 21.4 5.0 72.9 17.4
655 sd 1 6.5 1.6 22.8 5.7
657 corr 1 1.00 .32 .48 .28
658 corr 2 1.00 .32 .48 .28
662 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
663 matrix-data.txt:5: error: Matrix CORR had 1 rows but 4 rows were expected.
665 matrix-data.txt:6: error: Matrix CORR had 2 rows but 4 rows were expected.
672 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
673 1,MEAN,,21.40,5.00,72.90,17.40
674 1,STDDEV,,6.50,1.60,22.80,5.70
675 1,N,,106.00,106.00,106.00,106.00
676 1,CORR,var01,1.00,.32,.48,.28
677 1,CORR,var02,.32,1.00,. ,. @&t@
678 1,CORR,var03,.48,. ,1.00,. @&t@
679 1,CORR,var04,.28,. ,. ,1.00
686 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
687 2,CORR,var01,1.00,.32,.48,.28
688 2,CORR,var02,.32,2.00,.72,.54
689 2,CORR,var03,.48,.72,1.00,. @&t@
690 2,CORR,var04,.28,.54,. ,1.00
694 AT_SETUP([MATRIX DATA - badly formed])
695 AT_DATA([data.sps], [dnl
696 data list list NOTABLE /ROWTYPE_ (a8) VARNAME_(a4) v1 v2 v3 v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx.
703 corr v3 111 222 333 444
710 AT_CHECK([pspp --testing-mode -O format=csv data.sps], [0], [dnl
711 data.sps:12: warning: DEBUG MATRIX READ: CORR matrix has 4 columns but 3 rows named variables to be analyzed (and 1 rows named unknown variables).
713 Table: Debug Matrix Reader
714 ,,,v1,v2,v3,v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx
715 1,Correlation,v1,11.000,22.000,33.000,44.000
716 ,,v2,55.000,66.000,77.000,88.000
717 ,,v3,111.000,222.000,333.000,444.000
718 ,,v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx,. ,. ,. ,. @&t@
719 ,N,Value,2.000,3.000,4.000,5.000
720 ,Mean,Value,1.000,2.000,3.000,4.000
721 ,Standard Deviation,Value,.000,.000,.000,.000
725 AT_SETUP([MATRIX DATA - N subcommand])
726 AT_DATA([matrix-data.sps], [dnl
728 variables = rowtype_ var01 var02 var03 var04
730 /format = upper nodiagonal.
743 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
744 matrix-data.sps:8: error: N record is not allowed with N subcommand. Ignoring N record.
747 ROWTYPE_,VARNAME_,var01,var02,var03,var04
748 N,,99.0000,99.0000,99.0000,99.0000
749 MEAN,,34.0000,35.0000,36.0000,37.0000
750 STDDEV,,22.0000,11.0000,55.0000,66.0000
751 CORR,var01,1.0000,9.0000,8.0000,7.0000
752 CORR,var02,9.0000,1.0000,6.0000,5.0000
753 CORR,var03,8.0000,6.0000,1.0000,4.0000
754 CORR,var04,7.0000,5.0000,4.0000,1.0000
758 dnl Keep this test in sync with Example 3 in doc/matrices.texi.
759 AT_SETUP([MATRIX DATA - N subcommand - 2])
760 AT_DATA([matrix-data.sps], [dnl
762 VARIABLES=ROWTYPE_ var01 TO var08
763 /FORMAT=UPPER NODIAGONAL
766 MEAN 24.3 5.4 69.7 20.1 13.4 2.7 27.9 3.7
767 SD 5.7 1.5 23.5 5.8 2.8 4.5 5.4 1.5
768 CORR .17 .50 -.33 .27 .36 -.22 .18
769 CORR .29 .29 -.20 .32 .12 .38
770 CORR .05 .20 -.15 .16 .21
771 CORR .20 .32 -.17 .12
776 FORMATS var01 TO var08(F6.2).
780 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
782 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
783 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
784 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
785 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
786 CORR,var01,1.00,.17,.50,-.33,.27,.36,-.22,.18
787 CORR,var02,.17,1.00,.29,.29,-.20,.32,.12,.38
788 CORR,var03,.50,.29,1.00,.05,.20,-.15,.16,.21
789 CORR,var04,-.33,.29,.05,1.00,.20,.32,-.17,.12
790 CORR,var05,.27,-.20,.20,.20,1.00,.27,.12,-.24
791 CORR,var06,.36,.32,-.15,.32,.27,1.00,-.20,-.38
792 CORR,var07,-.22,.12,.16,-.17,.12,-.20,1.00,.04
793 CORR,var08,.18,.38,.21,.12,-.24,-.38,.04,1.00
797 dnl A "no-crash" test. This was observed to cause problems.
799 AT_SETUP([MATRIX DATA - crash])
801 AT_DATA([matrix-data.sps], [dnl
812 variables = roxtype_ var01
813 /format = upper nodiagonal.
817 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [ignore])
820 dnl Keep this test in sync with Example 6 in doc/matrices.texi.
821 AT_SETUP([MATRIX DATA - LOWER DIAGONAL without ROWTYPE_])
822 AT_DATA([matrix-data.sps], [dnl
824 VARIABLES=var01 TO var08
825 /CONTENTS=MEAN SD N CORR.
827 24.3 5.4 69.7 20.1 13.4 2.7 27.9 3.7
828 5.7 1.5 23.5 5.8 2.8 4.5 5.4 1.5
829 92 92 92 92 92 92 92 92
834 .27 .16 -.12 .22 1.00
835 .33 .15 -.17 .24 .21 1.00
836 .50 .29 -.20 .32 .12 .38 1.00
837 .17 .29 -.05 .20 .27 .20 .04 1.00
839 FORMATS var01 TO var08(F5.2).
842 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
844 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
845 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
846 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
847 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
848 CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
849 CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
850 CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
851 CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
852 CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
853 CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
854 CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
855 CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
859 AT_SETUP([MATRIX DATA - extraneous data without ROWTYPE_])
860 AT_DATA([matrix-data.sps], [dnl
862 VARIABLES=var01 TO var08
863 /CONTENTS=MEAN SD N CORR.
865 24.3 5.4 69.7 20.1 13.4 2.7 27.9 3.7
866 5.7 1.5 23.5 5.8 2.8 4.5 5.4 1.5
867 92 92 92 92 92 92 92 92
872 .27 .16 -.12 .22 1.00
873 .33 .15 -.17 .24 .21 1.00
874 .50 .29 -.20 .32 .12 .38 1.00
875 .17 .29 -.05 .20 .27 .20 .04 1.00
877 FORMATS var01 TO var08(F5.2).
880 AT_CHECK([pspp matrix-data.sps -O format=csv], [1], [dnl
881 matrix-data.sps:8.8-8.10: error: Extraneous data expecting end of line.
884 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
885 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
886 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
887 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
888 CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
889 CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
890 CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
891 CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
892 CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
893 CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
894 CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
895 CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
899 dnl Keep this test in sync with Example 7 in doc/matrices.texi.
900 AT_SETUP([MATRIX DATA - Split variables with explicit values without ROWTYPE_])
901 AT_DATA([matrix-data.sps], [dnl
903 VARIABLES=s1 var01 TO var04
906 /CONTENTS=MEAN SD N CORR.
923 FORMATS var01 TO var04(F5.2).
926 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
932 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
933 0,MEAN,,34.00,35.00,36.00,37.00
934 0,STDDEV,,22.00,11.00,55.00,66.00
935 0,N,,99.00,98.00,99.00,92.00
936 0,CORR,var01,1.00,.90,.80,.70
937 0,CORR,var02,.90,1.00,.60,.50
938 0,CORR,var03,.80,.60,1.00,.40
939 0,CORR,var04,.70,.50,.40,1.00
946 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
947 1,MEAN,,44.00,45.00,34.00,39.00
948 1,STDDEV,,23.00,15.00,51.00,46.00
949 1,N,,98.00,34.00,87.00,23.00
950 1,CORR,var01,1.00,.20,.30,.40
951 1,CORR,var02,.20,1.00,.50,.60
952 1,CORR,var03,.30,.50,1.00,.70
953 1,CORR,var04,.40,.60,.70,1.00
957 dnl Keep this test in sync with Example 8 in doc/matrices.texi.
958 AT_SETUP([MATRIX DATA - Split variable with sequential values without ROWTYPE_])
959 AT_DATA([matrix-data.sps], [dnl
961 VARIABLES=var01 TO var04
964 /CONTENTS=MEAN SD N CORR.
981 FORMATS var01 TO var04(F5.2).
984 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
990 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
991 1,MEAN,,34.00,35.00,36.00,37.00
992 1,STDDEV,,22.00,11.00,55.00,66.00
993 1,N,,99.00,98.00,99.00,92.00
994 1,CORR,var01,1.00,.90,.80,.70
995 1,CORR,var02,.90,1.00,.60,.50
996 1,CORR,var03,.80,.60,1.00,.40
997 1,CORR,var04,.70,.50,.40,1.00
1004 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
1005 2,MEAN,,44.00,45.00,34.00,39.00
1006 2,STDDEV,,23.00,15.00,51.00,46.00
1007 2,N,,98.00,34.00,87.00,23.00
1008 2,CORR,var01,1.00,.20,.30,.40
1009 2,CORR,var02,.20,1.00,.50,.60
1010 2,CORR,var03,.30,.50,1.00,.70
1011 2,CORR,var04,.40,.60,.70,1.00
1015 dnl Keep this test in sync with Example 9 in doc/matrices.texi.
1016 AT_SETUP([MATRIX DATA - Factor variables grouping within-cell records by factor without ROWTYPE_])
1017 AT_DATA([matrix-data.sps], [dnl
1019 VARIABLES=f1 var01 TO var04
1022 /CONTENTS=(MEAN SD N) CORR.
1035 FORMATS var01 TO var04(F5.1).
1038 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
1040 ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
1041 MEAN,0,,34.0,35.0,36.0,37.0
1042 STDDEV,0,,22.0,11.0,55.0,66.0
1043 N,0,,99.0,98.0,99.0,92.0
1044 MEAN,1,,44.0,45.0,34.0,39.0
1045 STDDEV,1,,23.0,15.0,51.0,46.0
1046 N,1,,98.0,34.0,87.0,23.0
1047 CORR,.,var01,1.0,.9,.8,.7
1048 CORR,.,var02,.9,1.0,.6,.5
1049 CORR,.,var03,.8,.6,1.0,.4
1050 CORR,.,var04,.7,.5,.4,1.0
1054 dnl Keep this test in sync with Example 10 in doc/matrices.texi.
1055 AT_SETUP([MATRIX DATA - Factor variables grouping within-cell records by row type without ROWTYPE_])
1056 AT_DATA([matrix-data.sps], [dnl
1058 VARIABLES=f1 var01 TO var04
1061 /CONTENTS=(MEAN) (SD) (N) CORR.
1074 FORMATS var01 TO var04(F5.1).
1077 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
1079 ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
1080 MEAN,0,,34.0,35.0,36.0,37.0
1081 MEAN,1,,44.0,45.0,34.0,39.0
1082 STDDEV,0,,22.0,11.0,55.0,66.0
1083 STDDEV,1,,23.0,15.0,51.0,46.0
1084 N,0,,99.0,98.0,99.0,92.0
1085 N,1,,98.0,34.0,87.0,23.0
1086 CORR,.,var01,1.0,.9,.8,.7
1087 CORR,.,var02,.9,1.0,.6,.5
1088 CORR,.,var03,.8,.6,1.0,.4
1089 CORR,.,var04,.7,.5,.4,1.0
1093 AT_SETUP([MATRIX DATA - syntax errors])
1094 AT_DATA([matrix-data.sps], [dnl
1095 MATRIX DATA VARIABLES=var01 varname_.
1096 MATRIX DATA VARIABLES=v v v.
1097 MATRIX DATA VARIABLES=rowtype_ v1 v2 v3/SPLIT=rowtype_.
1098 MATRIX DATA VARIABLES=rowtype_ v1 v2 v3/FACTORS=rowtype_.
1099 MATRIX DATA VARIABLES=rowtype_ s1 v1 v2 v3/SPLIT=v1/FACTORS=v1.
1101 MATRIX DATA VARIABLES=v1 v2 v3/FORMAT=FULL NODIAGONAL.
1102 MATRIX DATA VARIABLES=v1 v2 v3/FACTORS=v1.
1103 MATRIX DATA VARIABLES=v1 v2 v3.
1106 MATRIX DATA VARIABLES=v1/FACTORS=v1.
1107 MATRIX DATA VARIABLES=v1 v2 v3 ROWTYPE_.
1108 MATRIX DATA VARIABLES=v1 v2 v3/CONTENTS=N/N=5.
1109 MATRIX DATA VARIABLES=v1/CONTENTS=XYZZY.
1110 MATRIX DATA VARIABLES=v1/CONTENTS=(.
1111 MATRIX DATA VARIABLES=v1/CONTENTS=(CORR.
1112 MATRIX DATA VARIABLES=v1/CONTENTS=).
1114 MATRIX DATA VARIABLES=v*.
1115 MATRIX DATA VARIABLES=v/N=-1.
1116 MATRIX DATA VARIABLES=v/FORMAT=XYZZY.
1117 MATRIX DATA VARIABLES=v/FILE=123.
1118 MATRIX DATA VARIABLES=v/SPLIT=123.
1119 MATRIX DATA VARIABLES=v/CELLS=-1.
1120 MATRIX DATA VARIABLES=v/XYZZY.
1122 AT_CHECK([pspp matrix-data.sps -O format=csv], [1], [dnl
1123 matrix-data.sps:1: error: MATRIX DATA: VARIABLES may not include VARNAME_.
1125 matrix-data.sps:2: error: MATRIX DATA: Variable v appears twice in variable list.
1127 matrix-data.sps:3: error: MATRIX DATA: ROWTYPE_ is not allowed on SPLIT or FACTORS.
1129 matrix-data.sps:4: error: MATRIX DATA: ROWTYPE_ is not allowed on SPLIT or FACTORS.
1131 matrix-data.sps:5: error: MATRIX DATA: v1 may not appear on both SPLIT and FACTORS.
1133 matrix-data.sps:7: error: MATRIX DATA: FORMAT=FULL and FORMAT=NODIAGONAL are mutually exclusive.
1135 matrix-data.sps:8: error: MATRIX DATA: CELLS is required when factor variables are specified and VARIABLES does not include ROWTYPE_.
1137 matrix-data.sps:9: warning: MATRIX DATA: CONTENTS was not specified and VARIABLES does not include ROWTYPE_. Assuming CONTENTS=CORR.
1139 matrix-data.sps:12: error: MATRIX DATA: CELLS is required when factor variables are specified and VARIABLES does not include ROWTYPE_.
1141 matrix-data.sps:13: error: MATRIX DATA: VARIABLES includes ROWTYPE_ but the continuous variables are not the last ones on VARIABLES.
1143 matrix-data.sps:14: error: MATRIX DATA: Cannot specify N on CONTENTS along with the N subcommand.
1145 matrix-data.sps:15.35-15.39: error: MATRIX DATA: Syntax error at `XYZZY': Row type keyword expected.
1147 matrix-data.sps:16.36: error: MATRIX DATA: Syntax error at end of command: Row type keyword expected.
1149 matrix-data.sps:17.40: error: MATRIX DATA: Syntax error at end of command: Row type keyword expected.
1151 matrix-data.sps:18.35: error: MATRIX DATA: Syntax error at `)': Row type keyword expected.
1153 matrix-data.sps:19.12: error: MATRIX DATA: Syntax error at end of command: expecting VARIABLES.
1155 matrix-data.sps:20.24: error: MATRIX DATA: Syntax error at `*': expecting `/'.
1157 matrix-data.sps:21.27-21.28: error: MATRIX DATA: Syntax error at `-1': Expected non-negative integer for N.
1159 matrix-data.sps:22.32-22.36: error: MATRIX DATA: Syntax error at `XYZZY'.
1161 matrix-data.sps:23.30-23.32: error: MATRIX DATA: Syntax error at `123': expecting a file name or handle name.
1163 matrix-data.sps:24.31-24.33: error: MATRIX DATA: Syntax error at `123': expecting variable name.
1165 matrix-data.sps:25.31-25.32: error: MATRIX DATA: Syntax error at `-1': Expected non-negative integer for CELLS.
1167 matrix-data.sps:26.25-26.29: error: MATRIX DATA: Syntax error at `XYZZY'.
1171 dnl I don't know what lunatic thought this was OK, but we strive to be
1173 AT_SETUP([MATRIX DATA - plus and minus as delimiters])
1174 AT_DATA([matrix-data.sps], [dnl
1176 VARIABLES=ROWTYPE_ var01 TO var08.
1178 MEAN+24.3+5.4+69.7+20.1+13.4+2.7+27.9+3.7
1179 SD +5.7+1.5+23.5+5.8+2.8+4.5+5.4+1.5
1180 N+92+92+92+92+92+92+92+92
1183 CORR-.22e+0-.17+1.00
1184 CORR+.36d-0+.31-.14+1.00
1185 CORR+.27+.16-.12+.22+1.00
1186 CORR+.33+.15-.17+.24+.21+1.00
1187 CORR+.50+.29-.20+.32+.12+.38+1.00
1188 CORR+.17+.29-.05+.20+.27+.20+.04+1.00
1190 FORMATS var01 TO var08(F5.2).
1194 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
1196 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
1197 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
1198 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
1199 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
1200 CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
1201 CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
1202 CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
1203 CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
1204 CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
1205 CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
1206 CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
1207 CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00