Fixed bug reporting the significance of paired value t-test.
[pspp-builds.git] / tests / xforms / recode.sh
1 #!/bin/sh
2
3 # This program tests the RECODE command
4
5 TEMPDIR=/tmp/pspp-tst-$$
6 TESTFILE=$TEMPDIR/`basename $0`.sps
7
8
9 # ensure that top_builddir  are absolute
10 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
11 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
12 top_builddir=`cd $top_builddir; pwd`
13 PSPP=$top_builddir/src/ui/terminal/pspp
14
15 # ensure that top_srcdir is absolute
16 top_srcdir=`cd $top_srcdir; pwd`
17
18 STAT_CONFIG_PATH=$top_srcdir/config
19 export STAT_CONFIG_PATH
20
21 LANG=C
22 export LANG
23
24 cleanup()
25 {
26      if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then 
27         echo "NOT cleaning $TEMPDIR" 
28         return ; 
29      fi
30      cd /
31      rm -rf $TEMPDIR
32 }
33
34
35 fail()
36 {
37     echo $activity
38     echo FAILED
39     cleanup;
40     exit 1;
41 }
42
43
44 no_result()
45 {
46     echo $activity
47     echo NO RESULT;
48     cleanup;
49     exit 2;
50 }
51
52 pass()
53 {
54     cleanup;
55     exit 0;
56 }
57
58 mkdir -p $TEMPDIR
59
60 cd $TEMPDIR
61
62 activity="create program"
63 cat > $TESTFILE <<EOF
64 DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
65 MISSING VALUES x(9)/s('xxx').
66 BEGIN DATA.
67 0, '', ''
68 1, a, a
69 2, ab, ab
70 3, abc, abc
71 4, abcd, abcd
72 5, 123, 123
73 6, ' 123', ' 123'
74 7, +1, +1
75 8, 1x, 1x
76 9, abcd, abcdefghi
77 ,  xxx, abcdefghij
78 END DATA.
79
80 * Numeric to numeric, without INTO.
81 NUMERIC x0 TO x8 (F3).
82 MISSING VALUES x0 to x8 (9).
83 COMPUTE x0=value(x).
84 RECODE x0 (1=9).
85 COMPUTE x1=value(x).
86 RECODE x1 (1=9)(3=8)(5=7).
87 COMPUTE x2=value(x).
88 RECODE x2 (1=8)(2,3,4,5,6,8=9)(9=1).
89 COMPUTE x3=value(x).
90 RECODE x3 (1 THRU 9=10)(MISSING=11).
91 COMPUTE x4=value(x).
92 RECODE x4 (MISSING=11)(1 THRU 9=10).
93 COMPUTE x5=value(x).
94 RECODE x5 (LOWEST THRU 5=1).
95 COMPUTE x6=value(x).
96 RECODE x6 (4 THRU HIGHEST=2).
97 COMPUTE x7=value(x).
98 RECODE x7 (LO THRU HI=3).
99 COMPUTE x8=value(x).
100 RECODE x8 (SYSMIS=4).
101 LIST x x0 TO x8.
102
103 * Numeric to numeric, with INTO, without COPY.
104 NUMERIC ix0 TO ix8 (F3).
105 RECODE x (1=9) INTO ix0.
106 RECODE x (1=9)(3=8)(5=7) INTO ix1.
107 RECODE x (1=8)(2,3,4,5,6,8=9)(9=1) INTO ix2.
108 RECODE x (1 THRU 9=10)(MISSING=11) INTO ix3.
109 RECODE x (MISSING=11)(1 THRU 9=10) INTO ix4.
110 RECODE x (LOWEST THRU 5=1) INTO ix5.
111 RECODE x (4 THRU HIGHEST=2) INTO ix6.
112 RECODE x (LO THRU HI=3) INTO ix7.
113 RECODE x (SYSMIS=4) INTO ix8.
114 LIST x ix0 TO ix8.
115
116 * Numeric to numeric, with INTO, with COPY.
117 NUMERIC cx0 TO cx8 (F3).
118 RECODE x (1=9)(ELSE=COPY) INTO cx0.
119 RECODE x (1=9)(3=8)(5=7)(ELSE=COPY) INTO cx1.
120 RECODE x (1=8)(2,3,4,5,6,8=9)(9=1)(ELSE=COPY) INTO cx2.
121 RECODE x (1 THRU 9=10)(MISSING=11)(ELSE=COPY) INTO cx3.
122 RECODE x (MISSING=11)(1 THRU 9=10)(ELSE=COPY) INTO cx4.
123 RECODE x (LOWEST THRU 5=1)(ELSE=COPY) INTO cx5.
124 RECODE x (4 THRU HIGHEST=2)(ELSE=COPY) INTO cx6.
125 RECODE x (LO THRU HI=3)(ELSE=COPY) INTO cx7.
126 RECODE x (SYSMIS=4)(ELSE=COPY) INTO cx8.
127 LIST x cx0 TO cx8.
128
129 * String to string, with INTO, without COPY.
130 STRING s0 TO s2 (A4)/t0 TO t3 (A10).
131 RECODE s t ('a'='b')('ab'='bc') INTO s0 t0.
132 RECODE s t ('abcd'='xyzw') INTO s1 t1.
133 RECODE s t ('abc'='def')(ELSE='xyz') INTO s2 t2.
134 RECODE t ('a'='b')('abcdefghi'='xyz')('abcdefghij'='jklmnopqr') INTO t3.
135 LIST s t s0 TO s2 t0 TO t3.
136
137 * String to string, with INTO, with COPY.
138 STRING cs0 TO cs2 (A4)/ct0 TO ct3 (A10).
139 RECODE s t ('a'='b')('ab'='bc')(ELSE=COPY) INTO cs0 ct0.
140 RECODE s t ('abcd'='xyzw')(ELSE=COPY) INTO cs1 ct1.
141 RECODE s t ('abc'='def')(ELSE='xyz')(ELSE=COPY) INTO cs2 ct2.
142 RECODE t ('a'='b')('abcdefghi'='xyz')('abcdefghij'='jklmnopqr')(ELSE=COPY)
143     INTO ct3.
144 LIST s t cs0 TO cs2 ct0 TO ct3.
145
146 * String to numeric.
147 NUMERIC ns0 TO ns2 (F3)/nt0 TO nt2 (F3).
148 RECODE s t (CONVERT)(' '=0)('abcd'=1) INTO ns0 nt0.
149 RECODE s t (' '=0)(CONVERT)('abcd'=1) INTO ns1 nt1.
150 RECODE s t ('1x'=1)('abcd'=2)(ELSE=3) INTO ns2 nt2.
151 LIST s t ns0 TO ns2 nt0 TO nt2.
152
153 * Numeric to string.
154 STRING sx0 TO sx2 (a10).
155 RECODE x (1 THRU 9='abcdefghij') INTO sx0.
156 RECODE x (0,1,3,5,7,MISSING='xxx') INTO sx1.
157 RECODE x (2 THRU 6,SYSMIS='xyz')(ELSE='foobar') INTO sx2.
158 LIST x sx0 TO sx2.
159 EOF
160 if [ $? -ne 0 ] ; then no_result ; fi
161
162 activity="run program"
163 $SUPERVISOR $PSPP --testing-mode $TESTFILE
164 if [ $? -ne 0 ] ; then no_result ; fi
165
166 activity="test output"
167 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
168 diff -bu $TEMPDIR/pspp.list - <<EOF
169 x  x0  x1  x2  x3  x4  x5  x6  x7  x8
170 - --- --- --- --- --- --- --- --- ---
171 0   0   0   0   0   0   1   0   3   0
172 1   9   9   8  10  10   1   1   3   1
173 2   2   2   9  10  10   1   2   3   2
174 3   3   8   9  10  10   1   3   3   3
175 4   4   4   9  10  10   1   2   3   4
176 5   5   7   9  10  10   1   2   3   5
177 6   6   6   9  10  10   6   2   3   6
178 7   7   7   7  10  10   7   2   3   7
179 8   8   8   9  10  10   8   2   3   8
180 9   9   9   1  10  11   9   2   3   9
181 .   .   .   .  11  11   .   .   .   4
182 x ix0 ix1 ix2 ix3 ix4 ix5 ix6 ix7 ix8
183 - --- --- --- --- --- --- --- --- ---
184 0   .   .   .   .   .   1   .   3   .
185 1   9   9   8  10  10   1   .   3   .
186 2   .   .   9  10  10   1   .   3   .
187 3   .   8   9  10  10   1   .   3   .
188 4   .   .   9  10  10   1   2   3   .
189 5   .   7   9  10  10   1   2   3   .
190 6   .   .   9  10  10   .   2   3   .
191 7   .   .   .  10  10   .   2   3   .
192 8   .   .   9  10  10   .   2   3   .
193 9   .   .   1  10  11   .   2   3   .
194 .   .   .   .  11  11   .   .   .   4
195 x cx0 cx1 cx2 cx3 cx4 cx5 cx6 cx7 cx8
196 - --- --- --- --- --- --- --- --- ---
197 0   0   0   0   0   0   1   0   3   0
198 1   9   9   8  10  10   1   1   3   1
199 2   2   2   9  10  10   1   2   3   2
200 3   3   8   9  10  10   1   3   3   3
201 4   4   4   9  10  10   1   2   3   4
202 5   5   7   9  10  10   1   2   3   5
203 6   6   6   9  10  10   6   2   3   6
204 7   7   7   7  10  10   7   2   3   7
205 8   8   8   9  10  10   8   2   3   8
206 9   9   9   1  10  11   9   2   3   9
207 .   .   .   .  11  11   .   .   .   4
208    s          t   s0   s1   s2         t0         t1         t2         t3
209 ---- ---------- ---- ---- ---- ---------- ---------- ---------- ----------
210                           xyz                        xyz
211 a    a          b         xyz  b                     xyz        b
212 ab   ab         bc        xyz  bc                    xyz
213 abc  abc                  def                        def
214 abcd abcd            xyzw xyz             xyzw       xyz
215 123  123                  xyz                        xyz
216  123  123                 xyz                        xyz
217 +1   +1                   xyz                        xyz
218 1x   1x                   xyz                        xyz
219 abcd abcdefghi       xyzw xyz                        xyz        xyz
220 xxx  abcdefghij           xyz                        xyz        jklmnopqr
221    s          t  cs0  cs1  cs2        ct0        ct1        ct2        ct3
222 ---- ---------- ---- ---- ---- ---------- ---------- ---------- ----------
223                           xyz                        xyz
224 a    a          b    a    xyz  b          a          xyz        b
225 ab   ab         bc   ab   xyz  bc         ab         xyz        ab
226 abc  abc        abc  abc  def  abc        abc        def        abc
227 abcd abcd       abcd xyzw xyz  abcd       xyzw       xyz        abcd
228 123  123        123  123  xyz  123        123        xyz        123
229  123  123        123  123 xyz   123        123       xyz         123
230 +1   +1         +1   +1   xyz  +1         +1         xyz        +1
231 1x   1x         1x   1x   xyz  1x         1x         xyz        1x
232 abcd abcdefghi  abcd xyzw xyz  abcdefghi  abcdefghi  xyz        xyz
233 xxx  abcdefghij xxx  xxx  xyz  abcdefghij abcdefghij xyz        jklmnopqr
234    s          t ns0 ns1 ns2 nt0 nt1 nt2
235 ---- ---------- --- --- --- --- --- ---
236                   .   0   3   .   0   3
237 a    a            .   .   3   .   .   3
238 ab   ab           .   .   3   .   .   3
239 abc  abc          .   .   3   .   .   3
240 abcd abcd         1   1   2   1   1   2
241 123  123        123 123   3 123 123   3
242  123  123       123 123   3 123 123   3
243 +1   +1           1   1   3   1   1   3
244 1x   1x           .   .   1   .   .   1
245 abcd abcdefghi    1   1   2   .   .   3
246 xxx  abcdefghij   .   .   3   .   .   3
247 x        sx0        sx1        sx2
248 - ---------- ---------- ----------
249 0            xxx        foobar
250 1 abcdefghij xxx        foobar
251 2 abcdefghij            xyz
252 3 abcdefghij xxx        xyz
253 4 abcdefghij            xyz
254 5 abcdefghij xxx        xyz
255 6 abcdefghij            xyz
256 7 abcdefghij xxx        foobar
257 8 abcdefghij            foobar
258 9 abcdefghij xxx        foobar
259 .            xxx        xyz
260 EOF
261
262 if [ $? -ne 0 ] ; then fail ; fi
263
264 pass
265
266
267