Changed call to nl_langinfo with localecharset (from gnulib).
[pspp-builds.git] / tests / command / missing-values.sh
1 #!/bin/sh
2
3 # This program tests MISSING VALUES
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 LANG=C
21 export LANG
22
23 cleanup()
24 {
25      cd /
26      rm -rf $TEMPDIR
27 }
28
29
30 fail()
31 {
32     echo $activity
33     echo FAILED
34     cleanup;
35     exit 1;
36 }
37
38
39 no_result()
40 {
41     echo $activity
42     echo NO RESULT;
43     cleanup;
44     exit 2;
45 }
46
47 pass()
48 {
49     cleanup;
50     exit 0;
51 }
52
53 mkdir -p $TEMPDIR
54
55 cd $TEMPDIR
56
57 # Copy this file --- it's shared with another test
58 activity="create data"
59 cp $top_srcdir/tests/data-list.data $TEMPDIR
60 if [ $? -ne 0 ] ; then no_result ; fi
61
62
63 activity="create program"
64 cat > $TEMPDIR/missing-values.stat << foobar
65 DATA LIST NOTABLE/str1 1-5 (A) str2 6-8 (A) date1 9-19 (DATE) num1 20-25.
66
67 /* Valid: numeric missing values.
68 MISSING VALUES date1 num1 (1).
69 MISSING VALUES date1 num1 (1, 2).
70 MISSING VALUES date1 num1 (1, 2, 3).
71
72 /* Valid: numeric missing values using the first variable's format.
73 MISSING VALUES num1 date1 ('1').
74 MISSING VALUES num1 date1 ('1', '2').
75 MISSING VALUES num1 date1 ('1', '2', '3').
76 MISSING VALUES date1 num1 ('06-AUG-05').
77 MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78').
78 MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78', '14-FEB-81').
79
80 /* Valid: ranges of numeric missing values.
81 MISSING VALUES num1 (1 THRU 2).
82 MISSING VALUES num1 (LO THRU 2).
83 MISSING VALUES num1 (LOWEST THRU 2).
84 MISSING VALUES num1 (1 THRU HI).
85 MISSING VALUES num1 (1 THRU HIGHEST).
86
87 /* Valid: a range of numeric missing values, plus an individual value.
88 MISSING VALUES num1 (1 THRU 2, 3).
89 MISSING VALUES num1 (LO THRU 2, 3).
90 MISSING VALUES num1 (LOWEST THRU 2, 3).
91 MISSING VALUES num1 (1 THRU HI, -1).
92 MISSING VALUES num1 (1 THRU HIGHEST, -1).
93
94 /* Valid: string missing values.
95 MISSING VALUES str1 str2 ('abc  ','def').
96
97 /* Invalid: too long for str2.
98 MISSING VALUES str1 str2 ('abcde').
99
100 /* Invalid: no string ranges.
101 MISSING VALUES str1 ('a' THRU 'z').
102
103 /* Invalid: mixing string and numeric variables.
104 MISSING VALUES str1 num1 ('123').
105
106 /* Valid: may mix variable types when clearing missing values.
107 MISSING VALUES ALL ().
108
109 foobar
110 if [ $? -ne 0 ] ; then no_result ; fi
111
112
113 activity="run program"
114 $SUPERVISOR $PSPP --testing-mode -o raw-ascii --testing-mode --error-file=$TEMPDIR/errs $TEMPDIR/missing-values.stat 
115 # Note   vv   --- there are errors in input.  Therefore, the  command must FAIL
116 if [ $? -eq 0 ] ; then fail ; fi
117
118 activity="compare error messages"
119 diff -w $TEMPDIR/errs - <<EOF
120 $TEMPDIR/missing-values.stat:34: error: MISSING VALUES: Missing values provided are too long to assign to variable of width 3.
121 $TEMPDIR/missing-values.stat:37: error: MISSING VALUES: Syntax error expecting string at \`THRU'.
122 $TEMPDIR/missing-values.stat:37: error: MISSING VALUES: THRU is not a variable name.
123 $TEMPDIR/missing-values.stat:40: error: MISSING VALUES: Cannot mix numeric variables (e.g. num1) and string variables (e.g. str1) within a single list.
124 EOF
125 if [ $? -ne 0 ] ; then fail ; fi
126
127
128 pass;