#
# matching the following output specified as a pattern that verifies
# that the numerical values conform to a specific pattern, rather than
# specific values.
#
# Compiled Failed Invalid   Time   FailedType FailedMethod
#       38      0       0     0.41          0             



BEGIN	{
	    headerlines=0; datalines=0; totallines=0
	}

/^Compiled Failed Invalid   Time   FailedType FailedMethod$/	{
	    headerlines++;
	}

# note - the FailedMethod column is not matched very thoroughly by the
# following pattern. We just check for zero or more spaces after the
# FailedType column and the for any sequence of characters for the
# FailedMethod column. Better checking would verify an optional string of
# characters that follows class/method name patterns. However, it's very
# difficult to generate any data in this column under normal circumstances.
#
/^[ ]*[0-9]+[ ]*[0-9]+[ ]*[0-9]+[ ]*[0-9]+\.[0-9]+[ ]*[0-9]+[ ]*.*$/	{
	    datalines++;
	}

	{ totallines++; print $0 }

END	{
	    if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) {
	        exit 0
	    }
	    else {
	        exit 1
	    }
	}
