934fb6c1f30c912c23163d787a143bb909dc5db6
[pspp] / tests / stats / percentiles-compatible.sh
1 #! /bin/sh
2
3 # Tests calculation of percentiles with the 
4 # COMPATIBLE algorithm set.
5
6 TEMPDIR=/tmp/pspp-tst-$$
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
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
63 i=1;
64
65 activity="create program $i"
66 cat > $TEMPDIR/prog.sps <<EOF
67 DATA LIST LIST notable /X * .
68 BEGIN DATA.
69
70
71
72
73 5
74 END DATA.
75
76 FREQUENCIES 
77         VAR=x
78         /ALGORITHM=COMPATIBLE
79         /PERCENTILES = 0 25 50 75 100
80
81 EOF
82 if [ $? -ne 0 ] ; then no_result; fi
83
84 activity="run program $i"
85 $SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/prog.sps
86 if [ $? -ne 0 ] ; then no_result ; fi
87
88 activity="compare output $i"
89 diff -c $TEMPDIR/pspp.csv - <<EOF
90 Table: X
91 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
92 ,1.00,1,20.00,20.00,20.00
93 ,2.00,1,20.00,20.00,40.00
94 ,3.00,1,20.00,20.00,60.00
95 ,4.00,1,20.00,20.00,80.00
96 ,5.00,1,20.00,20.00,100.00
97 Total,,5,100.0,100.0,
98
99 Table: X
100 N,Valid,5
101 ,Missing,0
102 Mean,,3.00
103 Std Dev,,1.58
104 Minimum,,1.00
105 Maximum,,5.00
106 Percentiles,0,1.00
107 ,25,1.50
108 ,50 (Median),3.00
109 ,75,4.50
110 ,100,5.00
111 EOF
112 if [ $? -ne 0 ] ; then fail ; fi
113
114 pass;