Implement the MCONVERT command.
[pspp] / tests / language / data-io / mconvert.at
1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2021 Free Software Foundation, Inc.
3 dnl
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.
8 dnl
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.
13 dnl
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/>.
16 dnl
17 AT_BANNER([MCONVERT])
18
19 AT_SETUP([MCONVERT])
20 AT_DATA([mconvert.sps], [dnl
21 MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
22 BEGIN DATA.
23 0 COV  1.0
24 0 COV  1.0 16.0
25 0 COV  8.1 18.0 81.0
26 1 CORR 1
27 1 CORR .25 1
28 1 CORR .9 .5 1
29 1 STDDEV 1 4 9
30 END DATA.
31 FORMATS var01 TO var03(F5.2).
32 SPLIT FILE OFF.
33 MCONVERT.
34 LIST.
35 ])
36
37 AT_CHECK([pspp -O format=csv mconvert.sps], [0], [dnl
38 Table: Data List
39 s,ROWTYPE_,VARNAME_,var01,var02,var03
40 0,CORR,var01,1.00,.25,.90
41 0,CORR,var02,.25,1.00,.50
42 0,CORR,var03,.90,.50,1.00
43 0,STDDEV,,1.00,4.00,9.00
44 1,STDDEV,,1.00,4.00,9.00
45 1,COV,var01,1.00,1.00,8.10
46 1,COV,var02,1.00,16.00,18.00
47 1,COV,var03,8.10,18.00,81.00
48 ])
49 AT_CLEANUP
50
51 AT_SETUP([MCONVERT from .sav file])
52 AT_DATA([input.sps], [dnl
53 MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
54 BEGIN DATA.
55 0 COV  1.0
56 0 COV  1.0 16.0
57 0 COV  8.1 18.0 81.0
58 1 CORR 1
59 1 CORR .25 1
60 1 CORR .9 .5 1
61 1 STDDEV 1 4 9
62 END DATA.
63 FORMATS var01 TO var03(F5.2).
64 SPLIT FILE OFF.
65 SAVE OUTFILE='input.sav'.
66 ])
67 AT_DATA([mconvert.sps], [dnl
68 MCONVERT MATRIX=IN('input.sav').
69 LIST.
70 ])
71
72 AT_CHECK([pspp -O format=csv input.sps])
73 AT_CHECK([pspp -O format=csv mconvert.sps], [0], [dnl
74 Table: Data List
75 s,ROWTYPE_,VARNAME_,var01,var02,var03
76 0,CORR,var01,1.00,.25,.90
77 0,CORR,var02,.25,1.00,.50
78 0,CORR,var03,.90,.50,1.00
79 0,STDDEV,,1.00,4.00,9.00
80 1,STDDEV,,1.00,4.00,9.00
81 1,COV,var01,1.00,1.00,8.10
82 1,COV,var02,1.00,16.00,18.00
83 1,COV,var03,8.10,18.00,81.00
84 ])
85 AT_CLEANUP
86
87 AT_SETUP([MCONVERT to .sav file])
88 AT_DATA([mconvert.sps], [dnl
89 MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
90 BEGIN DATA.
91 0 COV  1.0
92 0 COV  1.0 16.0
93 0 COV  8.1 18.0 81.0
94 1 CORR 1
95 1 CORR .25 1
96 1 CORR .9 .5 1
97 1 STDDEV 1 4 9
98 END DATA.
99 FORMATS var01 TO var03(F5.2).
100 SPLIT FILE OFF.
101 MCONVERT/REPLACE/OUT('output.sav').
102 LIST.
103 ])
104 AT_DATA([output.sps], [dnl
105 GET 'output.sav'.
106 LIST.
107 ])
108
109 AT_CHECK([pspp -O format=csv mconvert.sps], [0], [dnl
110 Table: Data List
111 s,ROWTYPE_,VARNAME_,var01,var02,var03
112 0,COV,var01,1.00,1.00,8.10
113 0,COV,var02,1.00,16.00,18.00
114 0,COV,var03,8.10,18.00,81.00
115 1,CORR,var01,1.00,.25,.90
116 1,CORR,var02,.25,1.00,.50
117 1,CORR,var03,.90,.50,1.00
118 1,STDDEV,,1.00,4.00,9.00
119 ])
120 AT_CHECK([pspp -O format=csv output.sps], [0], [dnl
121 Table: Data List
122 s,ROWTYPE_,VARNAME_,var01,var02,var03
123 0,CORR,var01,1.00,.25,.90
124 0,CORR,var02,.25,1.00,.50
125 0,CORR,var03,.90,.50,1.00
126 0,STDDEV,,1.00,4.00,9.00
127 1,STDDEV,,1.00,4.00,9.00
128 1,COV,var01,1.00,1.00,8.10
129 1,COV,var02,1.00,16.00,18.00
130 1,COV,var03,8.10,18.00,81.00
131 ])
132 AT_CLEANUP
133
134 AT_SETUP([MCONVERT from .sav file to .sav file])
135 AT_DATA([input.sps], [dnl
136 MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
137 BEGIN DATA.
138 0 COV  1.0
139 0 COV  1.0 16.0
140 0 COV  8.1 18.0 81.0
141 1 CORR 1
142 1 CORR .25 1
143 1 CORR .9 .5 1
144 1 STDDEV 1 4 9
145 END DATA.
146 FORMATS var01 TO var03(F5.2).
147 SPLIT FILE OFF.
148 SAVE OUTFILE='input.sav'.
149 ])
150 AT_DATA([mconvert.sps], [dnl
151 MCONVERT MATRIX=IN('input.sav') OUT('output.sav')/REPLACE.
152 LIST.
153 ])
154 AT_DATA([output.sps], [dnl
155 GET 'output.sav'.
156 LIST.
157 ])
158
159 AT_CHECK([pspp -O format=csv input.sps])
160 AT_CHECK([pspp -O format=csv mconvert.sps], [1], [dnl
161 mconvert.sps:2: error: LIST: LIST is allowed only after the active dataset has been defined.
162 ])
163 AT_CHECK([pspp -O format=csv output.sps], [0], [dnl
164 Table: Data List
165 s,ROWTYPE_,VARNAME_,var01,var02,var03
166 0,CORR,var01,1.00,.25,.90
167 0,CORR,var02,.25,1.00,.50
168 0,CORR,var03,.90,.50,1.00
169 0,STDDEV,,1.00,4.00,9.00
170 1,STDDEV,,1.00,4.00,9.00
171 1,COV,var01,1.00,1.00,8.10
172 1,COV,var02,1.00,16.00,18.00
173 1,COV,var03,8.10,18.00,81.00
174 ])
175 AT_CLEANUP
176
177 AT_SETUP([MCONVERT with APPEND])
178 AT_DATA([mconvert.sps], [dnl
179 MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
180 BEGIN DATA.
181 0 COV  1.0
182 0 COV  1.0 16.0
183 0 COV  8.1 18.0 81.0
184 1 CORR 1
185 1 CORR .25 1
186 1 CORR .9 .5 1
187 1 STDDEV 1 4 9
188 END DATA.
189 FORMATS var01 TO var03(F5.2).
190 SPLIT FILE OFF.
191 MCONVERT/APPEND.
192 LIST.
193 ])
194
195 AT_CHECK([pspp -O format=csv mconvert.sps], [0], [dnl
196 Table: Data List
197 s,ROWTYPE_,VARNAME_,var01,var02,var03
198 0,COV,var01,1.00,1.00,8.10
199 0,COV,var02,1.00,16.00,18.00
200 0,COV,var03,8.10,18.00,81.00
201 0,CORR,var01,1.00,.25,.90
202 0,CORR,var02,.25,1.00,.50
203 0,CORR,var03,.90,.50,1.00
204 0,STDDEV,,1.00,4.00,9.00
205 1,CORR,var01,1.00,.25,.90
206 1,CORR,var02,.25,1.00,.50
207 1,CORR,var03,.90,.50,1.00
208 1,STDDEV,,1.00,4.00,9.00
209 1,COV,var01,1.00,1.00,8.10
210 1,COV,var02,1.00,16.00,18.00
211 1,COV,var03,8.10,18.00,81.00
212 ])
213 AT_CLEANUP
214
215 AT_SETUP([MCONVERT negative test])
216 AT_DATA([mconvert.sps], [MCONVERT.
217 ])
218 AT_CHECK([pspp mconvert.sps], [1], [dnl
219 mconvert.sps:1: error: MCONVERT: No active file is defined and no external file
220 is specified on MATRIX=IN.
221 ])
222 AT_CLEANUP