# 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"
}