Merge commit 'origin/stable'
[pspp-builds.git] / tests / command / data-list.sh
1 #!/bin/sh
2
3 # This program tests the DATA LIST input program.
4
5 TEMPDIR=/tmp/pspp-tst-$$
6 TESTFILE=$TEMPDIR/`basename $0`.sps
7
8 # ensure that top_builddir  are absolute
9 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
10 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
11 top_builddir=`cd $top_builddir; pwd`
12 PSPP=$top_builddir/src/ui/terminal/pspp
13
14 # ensure that top_srcdir is absolute
15 top_srcdir=`cd $top_srcdir; pwd`
16
17 STAT_CONFIG_PATH=$top_srcdir/config
18 export STAT_CONFIG_PATH
19
20
21 cleanup()
22 {
23      if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then 
24         echo "NOT cleaning $TEMPDIR" 
25         return ; 
26      fi
27      cd /
28      rm -rf $TEMPDIR
29 }
30
31
32 fail()
33 {
34     echo $activity
35     echo FAILED
36     cleanup;
37     exit 1;
38 }
39
40
41 no_result()
42 {
43     echo $activity
44     echo NO RESULT;
45     cleanup;
46     exit 2;
47 }
48
49 pass()
50 {
51     cleanup;
52     exit 0;
53 }
54
55 mkdir -p $TEMPDIR
56
57 cd $TEMPDIR
58
59 # Create command file.
60 activity="create program"
61 cat > $TESTFILE << EOF
62 data list list ('|','X') /A B C D.
63 begin data.
64 1|23X45|2.03
65 2X22|34|23|
66 3|34|34X34
67 end data.
68
69 list.
70
71 data list free skip=1/A B C D.
72 begin data.
73 # This record is ignored.
74 ,1,2,3
75 ,4,,5
76 6
77 7,
78 8 9
79 0,1 ,,,
80 ,,,,
81 2
82
83 3
84 4
85 5
86 end data.
87 list.
88
89 data list free (tab) skip=2/A B C D.
90 begin data.
91 # These records
92 # are skipped.
93 1       2       3       4
94 1       2       3       
95 1       2               4
96 1       2               
97 1               3       4
98 1               3       
99 1                       4
100 1                       
101         2       3       4
102         2       3       
103         2               4
104         2               
105                 3       4
106                 3       
107                         4
108                         
109 end data.
110 list.
111
112 * Test DATA LIST FIXED with multiple records.
113 data list fixed notable
114         /1 start 1-20 (adate)
115         /2 end 1-20 (adate)
116         /3 count 1-3.
117 begin data.
118 07-22-2007
119 10-06-2007
120 321
121 07-14-1789
122 08-26-1789
123 4
124 01-01-1972
125 12-31-1999
126 682
127 end data.
128 list.
129
130 * Test that DATA LIST FIXED works with an empty trailing record.
131 data list fixed notable records=2/x 1 y 2.
132 begin data.
133 12
134
135 34
136
137 56
138
139 78
140
141 90
142
143 end data.
144 list.
145 EOF
146 if [ $? -ne 0 ] ; then no_result ; fi
147
148
149 activity="run program"
150 $SUPERVISOR $PSPP --testing-mode $TESTFILE
151 if [ $? -ne 0 ] ; then fail ; fi
152
153 activity="compare output"
154 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
155 diff -b  $TEMPDIR/pspp.list - << EOF
156 1.1 DATA LIST.  Reading free-form data from INLINE.
157 +--------+------+
158 |Variable|Format|
159 #========#======#
160 |A       |F8.0  |
161 |B       |F8.0  |
162 |C       |F8.0  |
163 |D       |F8.0  |
164 +--------+------+
165        A        B        C        D
166 -------- -------- -------- --------
167     1.00    23.00    45.00     2.03 
168     2.00    22.00    34.00    23.00 
169     3.00    34.00    34.00    34.00 
170        A        B        C        D
171 -------- -------- -------- --------
172      .       1.00     2.00     3.00 
173      .       4.00      .       5.00 
174     6.00     7.00     8.00     9.00 
175      .00     1.00      .        .   
176      .        .        .        .   
177     2.00     3.00     4.00     5.00 
178        A        B        C        D
179 -------- -------- -------- --------
180     1.00     2.00     3.00     4.00 
181     1.00     2.00     3.00      .   
182     1.00     2.00      .       4.00 
183     1.00     2.00      .        .   
184     1.00      .       3.00     4.00 
185     1.00      .       3.00      .   
186     1.00      .        .       4.00 
187     1.00      .        .        .   
188      .       2.00     3.00     4.00 
189      .       2.00     3.00      .   
190      .       2.00      .       4.00 
191      .       2.00      .        .   
192      .        .       3.00     4.00 
193      .        .       3.00      .   
194      .        .        .       4.00 
195      .        .        .        .   
196                start                  end count
197 -------------------- -------------------- -----
198           07/22/2007           10/06/2007   321
199           07/14/1789           08/26/1789     4
200           01/01/1972           12/31/1999   682
201 x y
202 - -
203 1 2
204 3 4
205 5 6
206 7 8
207 9 0
208 EOF
209 if [ $? -ne 0 ] ; then fail ; fi
210
211 pass;