Implement SKIP keyword on DATA LIST. Fixes bug #17099.
[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      cd /
24      rm -rf $TEMPDIR
25 }
26
27
28 fail()
29 {
30     echo $activity
31     echo FAILED
32     cleanup;
33     exit 1;
34 }
35
36
37 no_result()
38 {
39     echo $activity
40     echo NO RESULT;
41     cleanup;
42     exit 2;
43 }
44
45 pass()
46 {
47     cleanup;
48     exit 0;
49 }
50
51 mkdir -p $TEMPDIR
52
53 cd $TEMPDIR
54
55 # Create command file.
56 activity="create program"
57 cat > $TESTFILE << EOF
58 data list list ('|','X') /A B C D.
59 begin data.
60 1|23X45|2.03
61 2X22|34|23|
62 3|34|34X34
63 end data.
64
65 list.
66
67 data list free skip=1/A B C D.
68 begin data.
69 # This record is ignored.
70 ,1,2,3
71 ,4,,5
72 6
73 7,
74 8 9
75 0,1,,,
76 ,,,,
77 2
78
79 3
80 4
81 5
82 end data.
83 list.
84
85 data list free (tab) skip=2/A B C D.
86 begin data.
87 # These records
88 # are skipped.
89 1       2       3       4
90 1       2       3       
91 1       2               4
92 1       2               
93 1               3       4
94 1               3       
95 1                       4
96 1                       
97         2       3       4
98         2       3       
99         2               4
100         2               
101                 3       4
102                 3       
103                         4
104                         
105 end data.
106 list.
107 EOF
108 if [ $? -ne 0 ] ; then no_result ; fi
109
110
111 activity="run program"
112 $SUPERVISOR $PSPP --testing-mode -o raw-ascii --testing-mode $TESTFILE
113 if [ $? -ne 0 ] ; then fail ; fi
114
115 activity="compare output"
116 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
117 diff -b  $TEMPDIR/pspp.list - << EOF
118 1.1 DATA LIST.  Reading free-form data from INLINE.
119 +--------+------+
120 |Variable|Format|
121 #========#======#
122 |A       |F8.0  |
123 |B       |F8.0  |
124 |C       |F8.0  |
125 |D       |F8.0  |
126 +--------+------+
127        A        B        C        D
128 -------- -------- -------- --------
129     1.00    23.00    45.00     2.03 
130     2.00    22.00    34.00    23.00 
131     3.00    34.00    34.00    34.00 
132        A        B        C        D
133 -------- -------- -------- --------
134      .       1.00     2.00     3.00 
135      .       4.00      .       5.00 
136     6.00     7.00     8.00     9.00 
137      .00     1.00      .        .   
138      .        .        .        .   
139     2.00     3.00     4.00     5.00 
140        A        B        C        D
141 -------- -------- -------- --------
142     1.00     2.00     3.00     4.00 
143     1.00     2.00     3.00      .   
144     1.00     2.00      .       4.00 
145     1.00     2.00      .        .   
146     1.00      .       3.00     4.00 
147     1.00      .       3.00      .   
148     1.00      .        .       4.00 
149     1.00      .        .        .   
150      .       2.00     3.00     4.00 
151      .       2.00     3.00      .   
152      .       2.00      .       4.00 
153      .       2.00      .        .   
154      .        .       3.00     4.00 
155      .        .       3.00      .   
156      .        .        .       4.00 
157      .        .        .        .   
158 EOF
159 if [ $? -ne 0 ] ; then fail ; fi
160
161 pass;