Blob Blame History Raw
# expect/tcl code to test the das parser and scanner
# jhrg
#
# $Log: test.7.exp,v $
# Revision 1.10  2003/12/11 01:08:38  jimg
# More fixes after resolving conflicts. This code still fails some tests.
#
# Revision 1.9.10.1  2003/10/03 16:26:30  jimg
# Fixed tests; I changed the text of das-test just a little and so these
# had to be updated. I wanted to be sure that the error message was from
# an exception and not just a write to stderr.
#
# Revision 1.9  2000/09/22 02:52:59  jimg
# Fixes to the tests to recognize some of the new error messages. Also,
# the test drivers were modified to catch the exceptions now thrown by
# some of the parsers.
#
# Revision 1.8  2000/06/16 18:15:01  jimg
# Merged with 3.1.7
#
# Revision 1.7.10.1  2000/06/15 02:24:57  jimg
# Fixed the tests: problems with PATH, etc. broke the tests on my new machine
#
# Revision 1.7  1999/03/24 23:42:23  jimg
# Added or updated for the new simple types (Int16, UInt16 and Float32)
#
# Revision 1.6  1997/05/13 23:29:30  jimg
# *** empty log message ***
#
# Revision 1.5  1997/03/27 18:20:02  jimg
# Update for version 2.13
#
# Revision 1.4  1996/11/13 19:23:47  jimg
# *** empty log message ***
#
# Revision 1.3  1996/08/12 22:22:21  jimg
# Changed for the new error message text from the parser.
#
# Revision 1.2  1996/05/14 15:40:54  jimg
# These changes have already been checked in once before. However, I
# corrupted the source repository and restored it from a 5/9/96 backup
# tape. The previous version's log entry should cover the changes.
#
# Revision 1.1  1995/02/16  15:34:53  jimg
# Added these tests. See comments in files in parent directory.
#

global comp_output		# contains output from das-test_start
global verbose			# this and srcdir are set by runtest.exp
global srcdir

# The variable `test_name' is the name of the das input file for this test.

set test_name test.7

# The variable `test_out' is a string that contains the text that should be
# stored in comp_output by das-test_start. The two strings should match
# exactly.

set test_out "Caught Error object:
Error parsing the text on line 10 at or near: my_test
Expected an attribute type (Byte, Int16, UInt16, Int32, UInt32, Float32,
Float64, String or Url) followed by a name and value."

das-test_start p $srcdir/$test_name

set comp_output [string trim $comp_output]

if ![string compare $test_out $comp_output] { # check comp_output
    pass "$test_name"
} else {
    set tlen [string length $test_out]
    set clen [string length $comp_output]

    set len $tlen;			# used by for loop below

    if {$clen < $tlen} {
	set len $clen;			# set if needed

	set size [expr $tlen - $clen]
	send_user "comp_output is smaller (by $size chars) than expected!\n"
	send_user "Here's the excess: '"
	send_user [string range $test_out [expr $clen -1] end]
 	send_user "'\n"
    } elseif {$tlen < $clen} {
	set size [expr $clen - $tlen]
	send_user "comp_output is larger (by $size chars) than expected!\n"
	send_user "Here's the excess: '"
	send_user [string range $comp_output [expr $tlen -1] end]
	send_user "'\n"
    }

    # $len is set to the smallest of $tlen or $clen to avoid running off the
    # end either of the strings.
    for {set i 0} {$i < $len} {incr i} {
	set c [string index $comp_output $i]
	set t [string index $test_out $i]
	if {$t != $c} {
	    send_user "comp_output ($c) and test_out ($t) differ at $i.\n"
	}
    }
    
    fail "$test_name"
}