page-eject-item: Factor out of text_item.
[pspp] / tests / language / data-io / matrix-data.at
index 2f39f5817f27f5f059be228a96644f20dcbc4694..8f503f62f285aa430028b550c3b1ddfc542835a9 100644 (file)
@@ -1,3 +1,19 @@
+dnl PSPP - a program for statistical analysis.
+dnl Copyright (C) 2017, 2020 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 <http://www.gnu.org/licenses/>.
+dnl
 AT_BANNER([MATRIX DATA])
 
 AT_SETUP([Matrix data (lower file)])
 AT_BANNER([MATRIX DATA])
 
 AT_SETUP([Matrix data (lower file)])
@@ -31,17 +47,17 @@ corr .17  .29  -.05  .20  .27  .20  .04  1.00
 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
 Table: Data List
 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
 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
-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
-corr    ,var03,-.2200,-.1700,1.0000,-.1400,-.1200,-.1700,-.2000,-.0500
-corr    ,var04,.3600,.3100,-.1400,1.0000,.2200,.2400,.3200,.2000
-corr    ,var05,.2700,.1600,-.1200,.2200,1.0000,.2100,.1200,.2700
-corr    ,var06,.3300,.1500,-.1700,.2400,.2100,1.0000,.3800,.2000
-corr    ,var07,.5000,.2900,-.2000,.3200,.1200,.3800,1.0000,.0400
-corr    ,var08,.1700,.2900,-.0500,.2000,.2700,.2000,.0400,1.0000
+mean,,24.3000,5.4000,69.7000,20.1000,13.4000,2.7000,27.9000,3.7000
+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
+corr,var03,-.2200,-.1700,1.0000,-.1400,-.1200,-.1700,-.2000,-.0500
+corr,var04,.3600,.3100,-.1400,1.0000,.2200,.2400,.3200,.2000
+corr,var05,.2700,.1600,-.1200,.2200,1.0000,.2100,.1200,.2700
+corr,var06,.3300,.1500,-.1700,.2400,.2100,1.0000,.3800,.2000
+corr,var07,.5000,.2900,-.2000,.3200,.1200,.3800,1.0000,.0400
+corr,var08,.1700,.2900,-.0500,.2000,.2700,.2000,.0400,1.0000
 ])
 AT_CLEANUP
 
 ])
 AT_CLEANUP
 
@@ -70,13 +86,13 @@ list.
 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
 Table: Data List
 ROWTYPE_,VARNAME_,var01,var02,var03,var04
 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
-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
-corr    ,var04,7.0000,5.0000,4.0000,1.0000
+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,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
 ])
 
 AT_CLEANUP
@@ -106,13 +122,13 @@ list.
 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
 Table: Data List
 ROWTYPE_,VARNAME_,var01,var02,var03,var04
 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
-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
-CORR    ,var04,7.0000,5.0000,4.0000,1.0000
+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,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
 ])
 
 AT_CLEANUP
@@ -140,13 +156,13 @@ list.
 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
 Table: Data List
 ROWTYPE_,VARNAME_,var01,var02,var03,var04
 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
-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
-corr    ,var04,7.0000,5.0000,4.0000,1.0000
+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,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
 ])
 
 AT_CLEANUP
@@ -174,13 +190,13 @@ list.
 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
 Table: Data List
 ROWTYPE_,VARNAME_,var01,var02,var03,var04
 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
-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
-corr    ,var04,7.0000,5.0000,4.0000,1.0000
+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,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
 ])
 
 AT_CLEANUP
@@ -216,29 +232,30 @@ list.
 
 
 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
 
 
 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
-Variable,Description,Position
-s1,Format: F4.0,1
-s2,Format: F4.0,2
-ROWTYPE_,Format: A8,3
-VARNAME_,Format: A8,4
-var01,Format: F10.4,5
-var02,Format: F10.4,6
-var03,Format: F10.4,7
+Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
+s1,1,,Scale,Input,8,Right,F4.0,F4.0,
+s2,2,,Scale,Input,8,Right,F4.0,F4.0,
+ROWTYPE_,3,,Nominal,Input,8,Left,A8,A8,
+VARNAME_,4,,Nominal,Input,8,Left,A8,A8,
+var01,5,,Scale,Input,8,Right,F10.4,F10.4,
+var02,6,,Scale,Input,8,Right,F10.4,F10.4,
+var03,7,,Scale,Input,8,Right,F10.4,F10.4,
 
 Table: Data List
 s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
 
 Table: Data List
 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
+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_CLEANUP
@@ -301,13 +318,13 @@ list.
 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
 Table: Data List
 ROWTYPE_,VARNAME_,var01,var_two,variable_number_three,variableFour
 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
+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_CLEANUP
@@ -318,7 +335,7 @@ 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 Check that matrices presented are read correctly.
 dnl The example below is an unlikely one since all
-dnl covariance/correlation matrices must be symetrical
+dnl covariance/correlation matrices must be symmetrical
 dnl but it serves a purpose for this test.
 AT_DATA([matrix-reader.pspp], [dnl
 matrix data
 dnl but it serves a purpose for this test.
 AT_DATA([matrix-reader.pspp], [dnl
 matrix data
@@ -349,9 +366,9 @@ factor  /matrix = in (corr = *)
 AT_CHECK([pspp -O format=csv matrix-reader.pspp], [0], [dnl
 Table: Correlation Matrix
 ,,var02,var04,var06
 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
+Correlation,var02,22.000,24.000,26.000
+,var04,42.000,44.000,46.000
+,var06,62.000,64.000,66.000
 
 Table: Component Matrix
 ,Component,
 
 Table: Component Matrix
 ,Component,
@@ -362,3 +379,132 @@ var06,9.22,.01
 ])
 
 AT_CLEANUP
 ])
 
 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
+
+
+
+dnl A "no-crash" test.  This was observed to cause problems.
+dnl See bug #58596
+AT_SETUP([Matrix data crash])
+
+AT_DATA([matrix-data.pspp], [dnl
+begin data
+corr 31
+
+matrix data
+    var1
+begin data
+    corr    1.00
+end data .
+
+matrix data
+    variables = roxtype_  var01
+   /format = upper nodiagonal.
+begin data
+])
+
+AT_CHECK([pspp -O format=csv matrix-data.pspp], [1], [ignore])
+
+AT_CLEANUP