Checkin of new directory structure.
[pspp-builds.git] / tests / stats / moments.sh
index e262e82fb02d44b3b35e1490b87914bb6be7802a..efee8ae10c41cecdf3d1e50fc040791e24373513 100755 (executable)
@@ -4,16 +4,21 @@
 
 TEMPDIR=/tmp/pspp-tst-$$
 
-here=`pwd`;
+# ensure that top_builddir  are absolute
+if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
+if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
+top_builddir=`cd $top_builddir; pwd`
 
 # ensure that top_srcdir is absolute
-cd $top_srcdir; top_srcdir=`pwd`
+top_srcdir=`cd $top_srcdir; pwd`
 
-export STAT_CONFIG_PATH=$top_srcdir/config
+STAT_CONFIG_PATH=$top_srcdir/config
+export STAT_CONFIG_PATH
 
 
 cleanup()
 {
+     cd /
      rm -rf $TEMPDIR
      :
 }
@@ -58,14 +63,15 @@ sed -ne 's/#.*//;/^[        ]*$/!p' > $TEMPDIR/moments-list-1p <<'EOF'
 1*3 => W=3.000 M1=1.000 M2=0.000 M3=sysmis M4=sysmis
 1*2 3 => W=3.000 M1=1.667 M2=1.333 M3=1.732 M4=sysmis
 1 1.00000001 => W=2.000 M1=1.000 M2=0.000 M3=sysmis M4=sysmis
+1000001 1000002 1000003 1000004 => W=4.000 M1=1000002.500 M2=1.667 M3=0.000 M4=-1.200
 EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
 cp $TEMPDIR/moments-list-1p $TEMPDIR/moments-list-2p
 sed -ne 's/#.*//;/^[   ]*$/!p' >> $TEMPDIR/moments-list-2p <<'EOF'
-# Only the two-pass algorithm can be expected to produce
-# proper third and fourth moments here.
-1000001 1000002 1000003 1000004 => W=4.000 M1=1000002.500 M2=1.667 M3=0.000 M4=-1.200
+# We used to have an example for which only the two-pass algorithm
+# produced reasonable results, but the provisional means algorithm
+# does better, so there aren't any extra tests here.
 EOF
 
 activity="create two-pass input file"
@@ -73,12 +79,13 @@ sed < $TEMPDIR/moments-list-2p >> $TEMPDIR/moments-2p.stat \
        -e 's#^\(.*\) => \(.*\)$#DEBUG MOMENTS/\1.#'
 if [ $? -ne 0 ] ; then no_result ; fi
 
-activity="run program"
-$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii \
+activity="run two-pass program"
+$SUPERVISOR $top_builddir/src/pspp --testing-mode -o raw-ascii \
         $TEMPDIR/moments-2p.stat >$TEMPDIR/moments-2p.err 2> $TEMPDIR/moments-2p.out
 
-activity="compare output"
-diff -B -b $TEMPDIR/moments-list-2p $TEMPDIR/moments-2p.out
+activity="compare two-pass output"
+perl -pi -e 's/^\s*$//g' $TEMPDIR/moments-list-2p $TEMPDIR/moments-2p.out
+diff -b $TEMPDIR/moments-list-2p $TEMPDIR/moments-2p.out
 if [ $? -ne 0 ] ; then fail ; fi
 
 activity="create input file"
@@ -86,12 +93,13 @@ sed < $TEMPDIR/moments-list-1p >> $TEMPDIR/moments-1p.stat \
        -e 's#^\(.*\) => \(.*\)$#DEBUG MOMENTS ONEPASS/\1.#'
 if [ $? -ne 0 ] ; then no_result ; fi
 
-activity="run program"
-$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii \
+activity="run one-pass program"
+$SUPERVISOR $top_builddir/src/pspp --testing-mode -o raw-ascii \
         $TEMPDIR/moments-1p.stat >$TEMPDIR/moments-1p.err 2> $TEMPDIR/moments-1p.out
 
-activity="compare output"
-diff -B -b $TEMPDIR/moments-list-1p $TEMPDIR/moments-1p.out
+activity="compare one-pass output"
+perl -pi -e 's/^\s*$//g' $TEMPDIR/moments-list-1p $TEMPDIR/moments-1p.out
+diff -b $TEMPDIR/moments-list-1p $TEMPDIR/moments-1p.out
 if [ $? -ne 0 ] ; then fail ; fi
 
 pass