X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flanguage%2Fdata-io%2Fmatrix-data.at;h=f26cbe86426a2010fc4d7f39fd05de0d4ae6e61a;hb=8180c5dd1591446174c0753ee960921786113403;hp=6cc1e67bb99d1ec54e7031305b188f8fbafd6e98;hpb=cc0b5800fcdde6126c4fc65b656f39c1459bf17c;p=pspp diff --git a/tests/language/data-io/matrix-data.at b/tests/language/data-io/matrix-data.at index 6cc1e67bb9..f26cbe8642 100644 --- a/tests/language/data-io/matrix-data.at +++ b/tests/language/data-io/matrix-data.at @@ -1,3 +1,19 @@ +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([MATRIX DATA]) AT_SETUP([Matrix data (lower file)]) @@ -9,7 +25,7 @@ matrix data /format = lower diagonal /file = 'matrix.dat' . - + list. ]) @@ -32,7 +48,7 @@ AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl Table: Data List ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08 mean ,,24.3000,5.4000,69.7000,20.1000,13.4000,2.7000,27.9000,3.7000 -sd ,,5.7000,1.5000,23.5000,5.8000,2.8000,4.5000,5.4000,1.5000 +STDDEV ,,5.7000,1.5000,23.5000,5.8000,2.8000,4.5000,5.4000,1.5000 n ,,92.0000,92.0000,92.0000,92.0000,92.0000,92.0000,92.0000,92.0000 corr ,var01,1.0000,.1800,-.2200,.3600,.2700,.3300,.5000,.1700 corr ,var02,.1800,1.0000,-.1700,.3100,.1600,.1500,.2900,.2900 @@ -55,13 +71,13 @@ matrix data /format = upper diagonal. begin data -mean 34 35 36 37 -sd 22 11 55 66 -n 100 101 102 103 -corr 1 9 8 7 -corr 1 6 5 -corr 1 4 -corr 1 +mean 34 35 36 37 +sd 22 11 55 66 +n_vector 100 101 102 103 +corr 1 9 8 7 +corr 1 6 5 +corr 1 4 +corr 1 end data. list. @@ -71,8 +87,8 @@ AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl Table: Data List ROWTYPE_,VARNAME_,var01,var02,var03,var04 mean ,,34.0000,35.0000,36.0000,37.0000 -sd ,,22.0000,11.0000,55.0000,66.0000 -n ,,100.0000,101.0000,102.0000,103.0000 +STDDEV ,,22.0000,11.0000,55.0000,66.0000 +N ,,100.0000,101.0000,102.0000,103.0000 corr ,var01,1.0000,9.0000,8.0000,7.0000 corr ,var02,9.0000,1.0000,6.0000,5.0000 corr ,var03,8.0000,6.0000,1.0000,4.0000 @@ -107,7 +123,7 @@ AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl Table: Data List ROWTYPE_,VARNAME_,var01,var02,var03,var04 MEAN ,,34.0000,35.0000,36.0000,37.0000 -SD ,,22.0000,11.0000,55.0000,66.0000 +STDDEV ,,22.0000,11.0000,55.0000,66.0000 N ,,100.0000,101.0000,102.0000,103.0000 CORR ,var01,1.0000,9.0000,8.0000,7.0000 CORR ,var02,9.0000,1.0000,6.0000,5.0000 @@ -141,7 +157,7 @@ AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl Table: Data List ROWTYPE_,VARNAME_,var01,var02,var03,var04 mean ,,34.0000,35.0000,36.0000,37.0000 -sd ,,22.0000,11.0000,55.0000,66.0000 +STDDEV ,,22.0000,11.0000,55.0000,66.0000 n ,,100.0000,101.0000,102.0000,103.0000 corr ,var01,1.0000,9.0000,8.0000,7.0000 corr ,var02,9.0000,1.0000,6.0000,5.0000 @@ -175,7 +191,7 @@ AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl Table: Data List ROWTYPE_,VARNAME_,var01,var02,var03,var04 mean ,,34.0000,35.0000,36.0000,37.0000 -sd ,,22.0000,11.0000,55.0000,66.0000 +STDDEV ,,22.0000,11.0000,55.0000,66.0000 n ,,100.0000,101.0000,102.0000,103.0000 corr ,var01,1.0000,9.0000,8.0000,7.0000 corr ,var02,9.0000,1.0000,6.0000,5.0000 @@ -186,22 +202,27 @@ corr ,var04,7.0000,5.0000,4.0000,1.0000 AT_CLEANUP -AT_SETUP([Matrix data split]) + +AT_SETUP([Matrix data split data]) AT_DATA([matrix-data.pspp], [dnl matrix data - variables = s1 s2 rowtype_ var01 TO var04 - /split = s1 s2 - /format = full diagonal. + variables = s1 s2 rowtype_ var01 var02 var03 + /split=s1 s2. begin data -1 1 mean 34 35 36 37 -1 1 sd 22 11 55 66 -1 0 n 100 101 102 103 -1 0 corr 1 9 8 7 -0 1 corr 9 1 6 5 -0 1 corr 8 6 1 4 -0 0 corr 7 5 4 1 +8 0 mean 21.4 5.0 72.9 +8 0 sd 6.5 1.6 22.8 +8 0 n 106 106 106 +8 0 corr 1 +8 0 corr .41 1 +8 0 corr -.16 -.22 1 +8 1 mean 11.4 1.0 52.9 +8 1 sd 9.5 8.6 12.8 +8 1 n 10 11 12 +8 1 corr 1 +8 1 corr .51 1 +8 1 corr .36 -.41 1 end data. display dictionary. @@ -209,6 +230,7 @@ display dictionary. list. ]) + AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl Variable,Description,Position s1,Format: F4.0,1 @@ -218,20 +240,244 @@ VARNAME_,Format: A8,4 var01,Format: F10.4,5 var02,Format: F10.4,6 var03,Format: F10.4,7 -var04,Format: F10.4,8 Table: Data List -s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03,var04 -1,1,mean ,,34.0000,35.0000,36.0000,37.0000 -1,1,sd ,,22.0000,11.0000,55.0000,66.0000 -1,0,n ,,100.0000,101.0000,102.0000,103.0000 -1,0,corr ,var01,1.0000,9.0000,8.0000,7.0000 -0,1,corr ,var02,9.0000,1.0000,6.0000,5.0000 -0,1,corr ,var03,8.0000,6.0000,1.0000,4.0000 -0,0,corr ,var04,7.0000,5.0000,4.0000,1.0000 +s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03 +8,0,mean ,,21.4000,5.0000,72.9000 +8,0,STDDEV ,,6.5000,1.6000,22.8000 +8,0,n ,,106.0000,106.0000,106.0000 +8,0,corr ,var01,1.0000,.4100,-.1600 +8,0,corr ,var02,.4100,1.0000,-.2200 +8,0,corr ,var03,-.1600,-.2200,1.0000 +8,1,mean ,,11.4000,1.0000,52.9000 +8,1,STDDEV ,,9.5000,8.6000,12.8000 +8,1,n ,,10.0000,11.0000,12.0000 +8,1,corr ,var01,1.0000,.5100,.3600 +8,1,corr ,var02,.5100,1.0000,-.4100 +8,1,corr ,var03,.3600,-.4100,1.0000 ]) AT_CLEANUP + +AT_SETUP([Matrix data duplicate variable]) + +dnl Negative test to check for sane behaviour in the face of bad syntax +AT_DATA([matrix-data.pspp], [dnl +set decimal = dot . +matrix data + variables = s1 s1 rowtype_ var01 var02 var03 + /split=s1. + +begin data +0 mean 21.4 5.0 72.9 +0 sd 6.5 1.6 22.8 +0 n 106 106 106 +0 corr 1 +0 corr .41 1 +0 corr -.16 -.22 1 +end data . + +list. +]) + + +AT_CHECK([pspp -O format=csv matrix-data.pspp], [1], [dnl +matrix-data.pspp:3: error: MATRIX DATA: Variable s1 appears twice in variable list. + +matrix-data.pspp:6: error: Stopping syntax file processing here to avoid a cascade of dependent command failures. +]) + +AT_CLEANUP + + + +AT_SETUP([Matrix data - long variable names]) + +AT_DATA([matrix-data.pspp], [dnl +matrix data + variables = rowtype_ var01 var_two variable_number_three variableFour + /format = upper diagonal. + +begin data +mean 34 35 36 37 +sd 22 11 55 66 +n_vector 100 101 102 103 +corr 1 9 8 7 +corr 1 6 5 +corr 1 4 +corr 1 +end data. + +list. +]) + +AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl +Table: Data List +ROWTYPE_,VARNAME_,var01,var_two,variable_number_three,variableFour +mean ,,34.0000,35.0000,36.0000,37.0000 +STDDEV ,,22.0000,11.0000,55.0000,66.0000 +N ,,100.0000,101.0000,102.0000,103.0000 +corr ,var01,1.0000,9.0000,8.0000,7.0000 +corr ,var_two,9.0000,1.0000,6.0000,5.0000 +corr ,variable_number_three,8.0000,6.0000,1.0000,4.0000 +corr ,variableFour,7.0000,5.0000,4.0000,1.0000 +]) + +AT_CLEANUP + + + +AT_SETUP([Matrix reader - read integrity]) + +dnl Check that matrices presented are read correctly. +dnl The example below is an unlikely one since all +dnl covariance/correlation matrices must be symmetrical +dnl but it serves a purpose for this test. +AT_DATA([matrix-reader.pspp], [dnl +matrix data + variables = rowtype_ var01 to var9 + /format = full. + +begin data +n 1 2 3 4 5 6 7 8 9 +sd 100 200 300 400 500 600 700 800 900 +corr 11 12 13 14 15 16 17 18 19 +corr 21 22 23 24 25 26 27 28 29 +corr 31 32 33 34 35 36 37 38 39 +corr 41 42 43 44 45 46 47 48 49 +corr 51 52 53 54 55 56 57 58 59 +corr 61 62 63 64 65 66 67 68 69 +corr 71 72 73 74 75 76 77 78 79 +corr 81 82 83 84 85 86 87 88 89 +corr 91 92 93 94 95 96 97 98 99 +end data. + +factor /matrix = in (corr = *) + /analysis var02 var04 var06 + /method = correlation + /rotation = norotate + /print correlation. +]) + +AT_CHECK([pspp -O format=csv matrix-reader.pspp], [0], [dnl +Table: Correlation Matrix +,,var02,var04,var06 +Correlations,var02,22.00,24.00,26.00 +,var04,42.00,44.00,46.00 +,var06,62.00,64.00,66.00 + +Table: Component Matrix +,Component, +,1,2 +var02,6.73,-2.23 +var04,6.95,2.15 +var06,9.22,.01 +]) + +AT_CLEANUP + + +AT_SETUP([Matrix data - too many rows]) + +dnl Test for a crash which occurred when the matrix had more rows declared +dnl than variables to hold them. +AT_DATA([matrix-data.pspp], [dnl +matrix data + variables = rowtype_ + var01 var02 var03 var04 + / format = upper diagonal . +begin data + mean 21.4 5.0 72.9 17.4 + sd 6.5 1.6 22.8 5.7 + n 106 106 106 106 + corr 1.00 .32 .48 .28 + corr 1.00 .72 .54 .44 + corr 1.00 .50 .59 .64 + corr 1.00 .62 .49 -.30 + corr 1.00 .56 -.38 .52 + corr 1.00 -.73 .91 .80 + corr 1.00 -.65 -.60 + corr 1.00 .70 + corr 1.00 +end data . + +execute. +]) + + +AT_CHECK([pspp -O format=csv matrix-data.pspp], [1], [dnl +matrix-data.pspp:13: error: MATRIX DATA: There are 4 variable declared but the data has at least 5 matrix rows. + +matrix-data.pspp:20: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined. +]) + + +AT_CLEANUP + + + + +AT_SETUP([Matrix data (badly formed)]) + +AT_DATA([data.pspp], [dnl +data list list /ROWTYPE_ (a8) VARNAME_(a4) v1 v2 v3 v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx. +begin data +mean "" 1 2 3 4 +sd "" 5 6 7 8 +n "" 2 3 4 5 +corr v1 11 22 33 44 +corr v2 55 66 77 88 +corr v3 111 222 333 444 +corr v4 4 3 21 1 +end data. + +list. + +factor matrix=in(corr = *) + . +]) + +AT_CHECK([pspp -O format=csv data.pspp], [1], [ignore]) + +AT_CLEANUP + + + + +AT_SETUP([Matrix data (N subcommand)]) + +AT_DATA([matrix-data.pspp], [dnl +matrix data + variables = rowtype_ var01 var02 var03 var04 + /n = 99 + /format = upper nodiagonal. +begin data +mean 34 35 36 37 +sd 22 11 55 66 +n_vector 1 2 3 4 +corr 9 8 7 +corr 6 5 +corr 4 +end data. + +list. +]) + +AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl +"matrix-data.pspp:12: warning: MATRIX DATA: The N subcommand was specified, but a N record was also found in the data. The N record will be ignored." + +Table: Data List +ROWTYPE_,VARNAME_,var01,var02,var03,var04 +N ,,99.0000,99.0000,99.0000,99.0000 +mean ,,34.0000,35.0000,36.0000,37.0000 +STDDEV ,,22.0000,11.0000,55.0000,66.0000 +corr ,var01,1.0000,9.0000,8.0000,7.0000 +corr ,var02,9.0000,1.0000,6.0000,5.0000 +corr ,var03,8.0000,6.0000,1.0000,4.0000 +corr ,var04,7.0000,5.0000,4.0000,1.0000 +]) + +AT_CLEANUP