#!/bin/sh

# This is a simple test that a new made mawk seems to
# be working OK.
# It's certainly not exhaustive, but the last two tests in 
# particular use most features.
#
# It needs to be run from  mawk/test
# and mawk needs to be in mawk/test or in PATH

dat=mawktest.dat

trap 'echo mawk_test failed ; rm -f temp$$ ; exit 1'  0

PATH=.:$PATH

# find out which mawk we're testing
mawk -W version


#################################
echo
echo testing input and field splitting

LC_ALL=C mawk -f wc.awk $dat | cmp -s - wc-awk.out || exit

echo input and field splitting OK
#####################################

echo
echo testing regular expression matching
LC_ALL=C mawk -f reg0.awk $dat > temp$$
LC_ALL=C mawk -f reg1.awk $dat >> temp$$
LC_ALL=C mawk -f reg2.awk $dat >> temp$$

cmp -s  reg-awk.out temp$$ || exit

echo regular expression matching OK
#######################################

echo
if [ -c /dev/full ]; then
    echo testing checking for write errors
    # Check for write errors noticed when closing the file
    LC_ALL=C mawk '{print}' <full-awk.dat >/dev/full 2>/dev/null && exit
    # Check for write errors noticed on writing
    # The file has to be bigger than the buffer size of the libc
    LC_ALL=C mawk '{print}' <../scan.c >/dev/full 2>/dev/null && exit

    echo checking for write errors OK
else
    echo "No /dev/full - check for write errors skipped"
fi

#######################################

echo
echo testing arrays and flow of control

LC_ALL=C mawk -f wfrq0.awk $dat | cmp -s - wfrq-awk.out || exit

echo array test OK
#################################

echo
echo testing function calls and general stress test

LC_ALL=C mawk -f ../examples/decl.awk $dat | cmp -s - decl-awk.out || exit 

echo general stress test passed


echo
echo  tested mawk seems OK

trap 0
rm -f temp$$
exit 0
