Add test for bug #11916.
[pspp-builds.git] / tests / bugs / crosstabs-crash.sh
1 #!/bin/sh
2
3 # This program tests for a bug which caused CROSSTABS to crash in
4 # integer mode.
5
6 TEMPDIR=/tmp/pspp-tst-$$
7 TESTFILE=$TEMPDIR/`basename $0`.sps
8
9 here=`pwd`;
10
11 # ensure that top_srcdir is absolute
12 cd $top_srcdir; top_srcdir=`pwd`
13
14 export STAT_CONFIG_PATH=$top_srcdir/config
15
16
17 cleanup()
18 {
19      rm -rf $TEMPDIR
20 }
21
22
23 fail()
24 {
25     echo $activity
26     echo FAILED
27     cleanup;
28     exit 1;
29 }
30
31
32 no_result()
33 {
34     echo $activity
35     echo NO RESULT;
36     cleanup;
37     exit 2;
38 }
39
40 pass()
41 {
42     cleanup;
43     exit 0;
44 }
45
46 mkdir -p $TEMPDIR
47
48 cd $TEMPDIR
49
50 activity="create program"
51 cat > $TESTFILE <<EOF
52 DATA LIST LIST /A * B * X * Y * .
53 BEGIN DATA.
54 2 3 4 5
55 END DATA.
56
57 CROSSTABS VARIABLES X (1,7) Y (1,7) /TABLES X BY Y.
58 EOF
59 if [ $? -ne 0 ] ; then no_result ; fi
60
61 $SUPERVISOR $here/../src/pspp -o raw-ascii $TESTFILE
62 if [ $? -ne 0 ] ; then no_result ; fi
63
64
65 diff -b -B -w $TEMPDIR/pspp.list - << EOF
66 1.1 DATA LIST.  Reading free-form data from the command file.
67 +--------+------+
68 |Variable|Format|
69 #========#======#
70 |A       |F8.0  |
71 |B       |F8.0  |
72 |X       |F8.0  |
73 |Y       |F8.0  |
74 +--------+------+
75
76 2.1 CROSSTABS.  Summary.
77 #===============#=====================================================#
78 #               #                        Cases                        #
79 #               #-----------------+-----------------+-----------------#
80 #               #      Valid      |     Missing     |      Total      #
81 #               #--------+--------+--------+--------+--------+--------#
82 #               #       N| Percent|       N| Percent|       N| Percent#
83 #---------------#--------+--------+--------+--------+--------+--------#
84 #X * Y          #       1|  100.0%|       0|    0.0%|       1|  100.0%#
85 #===============#========#========#========#========#========#========#
86
87 2.2 CROSSTABS.  X by Y [count].
88 #===============#==============================================================#========#
89 #               #                               Y                              |        #
90 #               #--------+--------+--------+--------+--------+--------+--------+        #
91 #              X#    1.00|    2.00|    3.00|    4.00|    5.00|    6.00|    7.00|  Total #
92 #---------------#--------+--------+--------+--------+--------+--------+--------+--------#
93 #           1.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
94 #           2.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
95 #           3.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
96 #           4.00#      .0|      .0|      .0|      .0|     1.0|      .0|      .0|     1.0#
97 #           5.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
98 #           6.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
99 #           7.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
100 #Total          #     .0%|     .0%|     .0%|     .0%|    1.0%|     .0%|     .0%|    1.0%#
101 #===============#========#========#========#========#========#========#========#========#
102
103 EOF
104 if [ $? -ne 0 ] ; then fail ; fi
105
106 pass;