* gdb.cp/cpcompletion.exp (test_class_complete): New procedure.

Add two new C++ completer tests which limit the output to a
	given class.
This commit is contained in:
Keith Seitz 2009-08-24 22:01:30 +00:00
parent 95699ff037
commit 676accff0e
2 changed files with 48 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2009-08-24 Keith Seitz <keiths@redhat.com>
* gdb.cp/cpcompletion.exp (test_class_complete): New procedure.
Add two new C++ completer tests which limit the output to a
given class.
2009-08-24 Michael Snyder <msnyder@vmware.com>
* gdb.base/del.exp: Fix typo in comment.

View File

@ -15,6 +15,40 @@
# This file is part of the gdb testsuite.
# A helper procedure to test location completions restricted by
# class.
proc test_class_complete {class expr name matches} {
global gdb_prompt
set matches [lsort $matches]
set cmd "complete break ${class}::$expr"
set seen {}
gdb_test_multiple $cmd $name {
"break ${class}::main" { fail "$name (saw global symbol)" }
$cmd { exp_continue }
-re "break ${class}::\[A-Za-z0-9_~\]+" {
set str $expect_out(0,string)
scan $str "break ${class}::%\[^(\]" method
lappend seen $method
exp_continue
}
-re "$gdb_prompt $" {
set failed ""
foreach got [lsort $seen] have $matches {
if {![string equal $got $have]} {
set failed $have
break
}
}
if {[string length $failed] != 0} {
fail "$name ($failed not found)"
} else {
pass $name
}
}
}
}
if $tracelevel then {
strace $tracelevel
}
@ -58,3 +92,11 @@ gdb_test "complete p foo1.Fo" "p foo1\\.Foofoo"
# Test completion with an anonymous struct.
gdb_test "complete p a.g" "p a\\.get"
# Test that completion is restricted by class name (all methods)
test_class_complete Foo "" "complete class methods" \
[list Foo Foofoo get_foo set_foo ~Foo]
test_class_complete Foo F "complete class methods beginning with F" \
[list Foo Foofoo]