#! /bin/sh
#
# Copyright (c) 1995 The Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
#    must display the following acknowledgement:
#	This product includes software developed by the Network Research
#	Group at Lawrence Berkeley National Laboratory.
# 4. Neither the name of the University nor of the Laboratory may be used
#    to endorse or promote products derived from this software without
#    specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# @(#) $Header: /home/cr1/benjie/cvsroot/ns/our-ns/tcl/test/test-all-template1,v 1.1.1.1 2001/06/20 15:38:31 benjie Exp $
#
# The initial version of this script was written and contributed 
# by Matt Mathis (mathis@psc.edu).
#

file=$1
directory=$2

version=$3
if test "$version" = "v2"; then
	tests=`awk '/^Class Test\//{ print substr($2,index($2, "/")+1) }' $file`
else
	tests=`awk '/^proc test_/{ print substr($2,index($2, "_")+1) }' $file`
fi

quiet="false"
if [ $# -ge 4 ] 
then
    flag=$4
    if test "$flag" = "QUIET" -o "$flag" = "quiet"; then
        quiet="true"
    else
        tests=$4
    fi
fi
datafile="temp.rands"

if [ ! -d $directory ]; then
    mkdir $directory
fi

echo Tests: $tests
success="true"
number=0
for t in $tests; do
    if test "$quiet" = "false"; then
    	echo
    fi
    echo Running test $t

    # Beware that xgraph is run asynchronously, and if it
    # is slow to launch, you may get an incorrect graph
    if test "$quiet" = "true"; then
    	../../ns $file $t QUIET
    else 
	../../ns $file $t 
    fi
    if [ -f $datafile ]; then
	if [ ! -f $directory/$t.Z ]; then
	    echo saving output for future validation
	    success="unknown"
	    cp $datafile $datafile.bk; compress $datafile  
	    cp $datafile.bk $datafile
	    mv $datafile.Z $directory/$t.Z
	else
	    uncompress -c $directory/$t.Z | cmp -s $datafile -
	    if [ $? = 0 ]; then
		echo Test output agrees with reference output
	    else
		echo Test output differs from reference output
		success="false"
		cp $datafile $directory/$t.test
		uncompress -c $directory/$t.Z > $directory/$t
		echo "Diagnose with: diff $directory/$t.test $directory/$t"
		echo "Differences due to floating-point formatting are not significant."

	    fi
	fi
    else
	success="unknown"
    fi
    if test "$quiet" = "false"; then
        echo 'next?'
        read answer
    fi
done
if test "$success" = "true"; then
	echo All test output agrees with reference output.
	exit 0
else
	echo Some test failed.
	exit 1
fi
