|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
# expect/tcl code to test the das scanner
|
|
Packit |
a4aae4 |
# jhrg
|
|
Packit |
a4aae4 |
#
|
|
Packit |
a4aae4 |
# $Log: scanner.4.exp,v $
|
|
Packit |
a4aae4 |
# Revision 1.3 2002/06/03 22:21:16 jimg
|
|
Packit |
a4aae4 |
# Merged with release-3-2-9
|
|
Packit |
a4aae4 |
#
|
|
Packit |
a4aae4 |
# Revision 1.2.54.1 2001/11/01 00:43:52 jimg
|
|
Packit |
a4aae4 |
# Fixes to the scanners and parsers so that dataset variable names may
|
|
Packit |
a4aae4 |
# start with digits. I've expanded the set of characters that may appear
|
|
Packit |
a4aae4 |
# in a variable name and made it so that all except `#' may appear at
|
|
Packit |
a4aae4 |
# the start. Some characters are not allowed in variables that appear in
|
|
Packit |
a4aae4 |
# a DDS or CE while they are allowed in the DAS. This makes it possible
|
|
Packit |
a4aae4 |
# to define containers with names like `COARDS:long_name.' Putting a colon
|
|
Packit |
a4aae4 |
# in a variable name makes the CE parser much more complex. Since the set
|
|
Packit |
a4aae4 |
# of characters that people want seems pretty limited (compared to the
|
|
Packit |
a4aae4 |
# complete ASCII set) I think this is an OK approach. If we have to open
|
|
Packit |
a4aae4 |
# up the expr.lex scanner completely, then we can but not without adding
|
|
Packit |
a4aae4 |
# lots of action clauses to teh parser. Note that colon is just an example,
|
|
Packit |
a4aae4 |
# there's a host of characters that are used in CEs that are not allowed
|
|
Packit |
a4aae4 |
# in IDs.
|
|
Packit |
a4aae4 |
#
|
|
Packit |
a4aae4 |
# Revision 1.2 1997/05/05 20:29:11 jimg
|
|
Packit |
a4aae4 |
# *** empty log message ***
|
|
Packit |
a4aae4 |
#
|
|
Packit |
a4aae4 |
# Revision 1.1 1996/07/16 16:54:35 jimg
|
|
Packit |
a4aae4 |
# Added.
|
|
Packit |
a4aae4 |
#
|
|
Packit |
a4aae4 |
#
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
global comp_output # contains output from das-test_start
|
|
Packit |
a4aae4 |
global verbose # this and srcdir are set by runtest.exp
|
|
Packit |
a4aae4 |
global srcdir
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
set test_name scanner.4
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
set prompt "das-test:"
|
|
Packit |
a4aae4 |
set timeout 2
|
|
Packit |
a4aae4 |
set pass 1
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
das-test_start s
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
expect {
|
|
Packit |
a4aae4 |
"${prompt} " {
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
timeout {
|
|
Packit |
a4aae4 |
send_user "Timeout\n"
|
|
Packit |
a4aae4 |
set pass 0
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
if {$pass} {
|
|
Packit |
a4aae4 |
set thing "\"Attributes\"\r\n"
|
|
Packit |
a4aae4 |
send $thing
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
expect {
|
|
Packit |
a4aae4 |
-re ".*WORD=${thing}${prompt} $" {
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
timeout {
|
|
Packit |
a4aae4 |
send_user "Timeout\n"
|
|
Packit |
a4aae4 |
set pass 0
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
# Check that all the special characters pass through the scanner. *DON'T*
|
|
Packit |
a4aae4 |
# mess with the strings THING and THING2! In THING2 all the special chars are
|
|
Packit |
a4aae4 |
# prefixed by `\\' except `[' which is prefixed by `\\\'; the first two `\'s'
|
|
Packit |
a4aae4 |
# yeild a single `\', the third `\' escapes the `['. NB: the `[' in THING is
|
|
Packit |
a4aae4 |
# also escaped. The left bracket is special in Tcl even in a string
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
if {$pass} {
|
|
Packit |
a4aae4 |
set thing "\"This is a long nasty string that has some special characters\
|
|
Packit |
a4aae4 |
embedded:!@#$%^&*()_+|~-=`,./;'\[]{}:<>?\"\r\n"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
set thing2 "\"This is a long nasty string that has some special characters\
|
|
Packit |
a4aae4 |
embedded:!@#\\$\\%\\^\\&\\*\\(\\)\\_\\+\\|\\~\\-\\=\\`\\,\\.\\/\\;\\'\\\[\\]\\{\\}\\:\\<\\>\\?\"\r\n"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
send $thing
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
expect {
|
|
Packit |
a4aae4 |
-re ".*WORD=${thing2}${prompt} $" {
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
timeout {
|
|
Packit |
a4aae4 |
send_user "Timeout\n"
|
|
Packit |
a4aae4 |
set pass 0
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
# Strange case where unquoted sequence of characters `falls through' the
|
|
Packit |
a4aae4 |
# scanner cases for WORD, Float and int and winds up a string. Maybe we should
|
|
Packit |
a4aae4 |
# not allow this to happen? 7/15/96
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
if {$pass} {
|
|
Packit |
a4aae4 |
set thing "a_0.9\r\n"
|
|
Packit |
a4aae4 |
send $thing
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
expect {
|
|
Packit |
a4aae4 |
-re ".*WORD=${thing}${prompt} $" {
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
timeout {
|
|
Packit |
a4aae4 |
send_user "Timeout\n"
|
|
Packit |
a4aae4 |
set pass 0
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
if {$pass} {
|
|
Packit |
a4aae4 |
pass $test_name
|
|
Packit |
a4aae4 |
} else {
|
|
Packit |
a4aae4 |
fail $test_name
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
das-test_exit
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|