# Browser Window Tests # Copyright 1998, 2001 Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Please email any bugs, comments, and/or additions to this file to: # bug-gdb@prep.ai.mit.edu # This file was written by Keith Seitz (keiths@cygnus.com) # Read in the standard defs file if {![gdbtk_read_defs]} { break } global objdir test_ran set _files(stupid_initializer) -100 ##### ##### # # # Helper functions for this module # # # ##### ##### # Set the search expression proc set_regexp {exp} { global browser $browser component filt_entry delete 0 end $browser component filt_entry insert 0 $exp } # Do the search proc do_search {} { global browser $browser search set m [$browser component func_box get 0 end] return $m } # Set search to use regular expressions. proc set_search_mode {val} { global browser pref set gdb/search/filter_mode $val # Use configure instead of entryset: need to have # combobox's command fire $browser component filt_type configure -value $val } # Highlight a file proc select {filename} { global browser _files if {[info exists _files($filename)]} { $browser component file_box selection set $_files($filename) } else { set files [$browser component file_box get 0 end] set i [lsearch $files $filename] set _files($filename) $i $browser component file_box selection set $i } $browser search } proc select_all {} { global browser $browser component file_all invoke } # clear all files proc clear {} { global browser $browser component file_box selection clear 0 end $browser search } ##### ##### # # # BROWSER TESTS # # # ##### ##### # Load the test executable set program [file join $objdir stack] if {[catch {gdbtk_test_file $program} t]} { # This isn't a test case, since if this fails, we're hosed. gdbtk_test_error "loading \"$program\": $t" } # Open a browser set browser [ManagedWin::open BrowserWin] # Test: browser-1.1 # Desc: Check file listbox contents gdbtk_test browser-1.1 {file listbox contents} { set m [$browser component file_box get 0 end] set f {} if {[lsearch $m stack1.c] == -1} { lappend f 0 } else { lappend f 1 } if {[lsearch $m stack2.c] == -1} { lappend f 0 } else { lappend f 1 } join $f \ } {1 1} # Tests 2.* test starts with search mode. # Test: browser-2.1 # Desc: Check all files/all funcs gdbtk_test browser-2.1 {all files/all funcs} { set_search_mode "starts with" set_regexp "" select_all set m [do_search] set r 0 foreach f {extern_func1_1 extern_func1_10 extern_func1_11 extern_func1_12 \ extern_func1_13 extern_func1_14 extern_func1_15 extern_func1_2 \ extern_func1_3 extern_func1_4 extern_func1_5 extern_func1_6 \ extern_func1_7 extern_func1_8 extern_func1_9 func_1 \ func_10 func_11 func_12 func_13 \ func_14 func_15 func_2 func_3 \ func_4 func_5 func_6 func_7 \ func_8 func_9 main static_func_1 \ static_func_10 static_func_11 static_func_12 static_func_13 \ static_func_14 static_func_15 static_func_2 static_func_3 \ static_func_4 static_func_5 static_func_6 static_func_7 \ static_func_8 static_func_9} { if {[lsearch $m $f] != -1} { incr r } } set r } {46} # Test: browser-2.2 # Desc: Check all functions in stack1.c gdbtk_test browser-2.2 {all functions in stack1.c} { set_regexp "" clear select stack1.c set m [do_search] set r 0 foreach f {func_1 func_10 func_11 func_12 \ func_13 func_14 func_15 func_2 \ func_3 func_4 func_5 func_6 \ func_7 func_8 func_9 main \ static_func_1 static_func_10 static_func_11 static_func_12 \ static_func_13 static_func_14 static_func_15 static_func_2 \ static_func_3 static_func_4 static_func_5 static_func_6 \ static_func_7 static_func_8 static_func_9} { if {[lsearch $m $f] != -1} { incr r } } set r } {31} if {$test_ran} { clear } # Test: browser-2.3 # Desc: Check all functions in stack2.c gdbtk_test browser-2.3 {all functions in stack2.c} { set_regexp "" clear select stack2.c set m [do_search] set r 0 foreach f {extern_func1_1 extern_func1_10 extern_func1_11 \ extern_func1_12 extern_func1_13 extern_func1_14 extern_func1_15 \ extern_func1_2 extern_func1_3 extern_func1_4 extern_func1_5 \ extern_func1_6 extern_func1_7 extern_func1_8 extern_func1_9} { if {[lsearch $m $f] != -1} { incr r } } set r } {15} if {$test_ran} { clear } # Test: browser-2.4 # Desc: Check for all functions matching "func" - mode starts with gdbtk_test browser-2.4 {all functions matching "func" - "mode starts with"} { set_search_mode "starts with" select_all set_regexp func do_search } {func_1 func_10 func_11 func_12 func_13 func_14 func_15 func_2 func_3 func_4 func_5 func_6 func_7 func_8 func_9} # Test: browser-2.5 # Desc: Check all functions matching "func" in stack1.c - mode starts with gdbtk_test browser-2.5 {all functions matching "func" in stack1.c - "mode starts with"} { set_search_mode "starts with" set_regexp func clear select stack1.c do_search } {func_1 func_10 func_11 func_12 func_13 func_14 func_15 func_2 func_3 func_4 func_5 func_6 func_7 func_8 func_9} # Test: browser-2.6 # Desc: Check all functions matching "funcs" in stack2.c - mode starts with gdbtk_test browser-2.6 {all functions matching "func" in stack2.c - mode "starts with"} { set_search_mode "starts with" set_regexp func clear select stack2.c do_search } {} if {$test_ran} { clear } # Test: browser-2.7 # Desc: Check all functions matching "foobar" gdbtk_test browser-2.7 {all functions matching "foobar"} { set_search_mode "starts with" select_all set_regexp foobar do_search } {} # Test: browser-2.8 # Desc: Check all functions matching "foobar" in stack1.c gdbtk_test browser-2.8 {functions matching "foobar" in stack1.c} { set_search_mode "starts with" set_regexp foobar clear select stack1.c do_search } {} # Tests 3.* test "contains" search mode. # Test: browser-3.1 # Desc: Check all files/all funcs gdbtk_test browser-3.1 {all files/all funcs} { set_search_mode "contains" set_regexp "" select_all set m [do_search] set r 0 foreach f {extern_func1_1 extern_func1_10 extern_func1_11 extern_func1_12 \ extern_func1_13 extern_func1_14 extern_func1_15 extern_func1_2 \ extern_func1_3 extern_func1_4 extern_func1_5 extern_func1_6 \ extern_func1_7 extern_func1_8 extern_func1_9 func_1 \ func_10 func_11 func_12 func_13 \ func_14 func_15 func_2 func_3 \ func_4 func_5 func_6 func_7 \ func_8 func_9 main static_func_1 \ static_func_10 static_func_11 static_func_12 static_func_13 \ static_func_14 static_func_15 static_func_2 static_func_3 \ static_func_4 static_func_5 static_func_6 static_func_7 \ static_func_8 static_func_9} { if {[lsearch $m $f] != -1} { incr r } } set r } {46} # Test: browser-3.2 # Desc: Check all functions in stack1.c gdbtk_test browser-3.2 {all functions in stack1.c} { set_regexp "" set_search_mode "contains" clear select stack1.c set m [do_search] set r 0 foreach f {func_1 func_10 func_11 func_12 \ func_13 func_14 func_15 func_2 \ func_3 func_4 func_5 func_6 \ func_7 func_8 func_9 main \ static_func_1 static_func_10 static_func_11 static_func_12 \ static_func_13 static_func_14 static_func_15 static_func_2 \ static_func_3 static_func_4 static_func_5 static_func_6 \ static_func_7 static_func_8 static_func_9} { if {[lsearch $m $f] != -1} { incr r } } set r } {31} if {$test_ran} { clear } # Test: browser-3.3 # Desc: Check all functions in stack2.c gdbtk_test browser-3.3 {all functions in stack2.c} { set_regexp "" set_search_mode "contains" clear select stack2.c set m [do_search] set r 0 foreach f {extern_func1_1 extern_func1_10 extern_func1_11 \ extern_func1_12 extern_func1_13 extern_func1_14 extern_func1_15 \ extern_func1_2 extern_func1_3 extern_func1_4 extern_func1_5 \ extern_func1_6 extern_func1_7 extern_func1_8 extern_func1_9} { if {[lsearch $m $f] != -1} { incr r } } set r } {15} if {$test_ran} { clear } # Test: browser-3.4 # Desc: Check for all functions matching "func" - mode contains gdbtk_test browser-3.4 {all functions matching "func_1" - "mode contains"} { set_search_mode "contains" set_regexp "func_1" select_all do_search } {func_1 func_10 func_11 func_12 func_13 func_14 func_15 static_func_1 static_func_10 static_func_11 static_func_12 static_func_13 static_func_14 static_func_15} # Test: browser-3.5 # Desc: Check all functions matching "func_1" in stack1.c - mode contains gdbtk_test browser-3.5 {all functions matching "func_1" in stack1.c - "mode contains"} { set_search_mode "contains" set_regexp "func_1" clear select stack1.c do_search } {func_1 func_10 func_11 func_12 func_13 func_14 func_15 static_func_1 static_func_10 static_func_11 static_func_12 static_func_13 static_func_14 static_func_15} # Test: browser-3.6 # Desc: Check all functions matching "func_1" in stack2.c - mode contains gdbtk_test browser-3.6 {all functions matching "func" in stack2.c - mode "contains"} { set_search_mode "contains" set_regexp func_1 clear select stack2.c do_search } {} # Test: browser-3.7 # Desc: Check all functions matching "foobar" gdbtk_test browser-3.7 {all functions matching "foobar"} { set_search_mode "contains" select_all set_regexp foobar do_search } {} # Test: browser-3.8 # Desc: Check all functions matching "foobar" in stack1.c gdbtk_test browser-3.8 {functions matching "foobar" in stack1.c} { set_search_mode "contains" set_regexp foobar clear select stack1.c do_search } {} # Tests 4.* test "ends with" search mode. # Test: browser-4.1 # Desc: Check all files/all funcs gdbtk_test browser-4.1 {all files/all funcs} { set_search_mode "ends with" set_regexp "" select_all set m [do_search] set r 0 foreach f {extern_func1_1 extern_func1_10 extern_func1_11 extern_func1_12 \ extern_func1_13 extern_func1_14 extern_func1_15 extern_func1_2 \ extern_func1_3 extern_func1_4 extern_func1_5 extern_func1_6 \ extern_func1_7 extern_func1_8 extern_func1_9 func_1 \ func_10 func_11 func_12 func_13 \ func_14 func_15 func_2 func_3 \ func_4 func_5 func_6 func_7 \ func_8 func_9 main static_func_1 \ static_func_10 static_func_11 static_func_12 static_func_13 \ static_func_14 static_func_15 static_func_2 static_func_3 \ static_func_4 static_func_5 static_func_6 static_func_7 \ static_func_8 static_func_9} { if {[lsearch $m $f] > -1} { incr r } } set r } {46} # Test: browser-4.2 # Desc: Check all functions in stack1.c gdbtk_test browser-4.2 {all functions in stack1.c} { set_regexp "" set_search_mode "ends with" clear select stack1.c set m [do_search] set r 0 foreach f {func_1 func_10 func_11 func_12 \ func_13 func_14 func_15 func_2 \ func_3 func_4 func_5 func_6 \ func_7 func_8 func_9 main \ static_func_1 static_func_10 static_func_11 static_func_12 \ static_func_13 static_func_14 static_func_15 static_func_2 \ static_func_3 static_func_4 static_func_5 static_func_6 \ static_func_7 static_func_8 static_func_9} { if {[lsearch $m $f] != -1} { incr r } } set r } {31} if {$test_ran} { clear } # Test: browser-4.3 # Desc: Check all functions in stack2.c gdbtk_test browser-4.3 {all functions in stack2.c} { set_regexp "" set_search_mode "ends with" clear select stack2.c set m [do_search] set r 0 foreach f {extern_func1_1 extern_func1_10 extern_func1_11 \ extern_func1_12 extern_func1_13 extern_func1_14 extern_func1_15 \ extern_func1_2 extern_func1_3 extern_func1_4 extern_func1_5 \ extern_func1_6 extern_func1_7 extern_func1_8 extern_func1_9} { if {[lsearch $m $f] != -1} { incr r } } set r } {15} if {$test_ran} { clear } # Test: browser-4.4 # Desc: Check for all functions matching "func_1" - mode ends with gdbtk_test browser-4.4 {all functions matching "func_1" - "mode ends with"} { set_search_mode "ends with" set_regexp "func_1" select_all do_search } {func_1 static_func_1} # Test: browser-4.5 # Desc: Check all functions matching "func_1" in stack1.c - mode ends with gdbtk_test browser-4.5 {all functions matching "func_1" in stack1.c - "mode ends with"} { set_search_mode "ends with" set_regexp "func_1" clear select stack1.c do_search } {func_1 static_func_1} if {$test_ran} { clear } # Test: browser-4.6 # Desc: Check all functions matching "func_1" in stack2.c - mode ends with gdbtk_test browser-4.6 {all functions matching "func" in stack2.c - mode "ends with"} { set_search_mode "ends with" set_regexp func_1 clear select stack2.c do_search } {} # Test: browser-4.7 # Desc: Check all functions matching "foobar" gdbtk_test browser-4.7 {all functions matching "foobar"} { set_search_mode "ends with" select_all set_regexp foobar do_search } {} # Test: browser-4.8 # Desc: Check all functions matching "foobar" in stack1.c gdbtk_test browser-4.8 {functions matching "foobar" in stack1.c} { set_search_mode "ends with" set_regexp foobar clear select stack1.c do_search } {} if {$test_ran} { clear } # Test: browser-5.10 # Desc: Check all functions matching regexp "func" gdbtk_test browser-5.10 {all functions matching regexp "func"} { set_search_mode "matches regexp" set_regexp func select_all do_search } {extern_func1_1 extern_func1_10 extern_func1_11 extern_func1_12 extern_func1_13 extern_func1_14 extern_func1_15 extern_func1_2 extern_func1_3 extern_func1_4 extern_func1_5 extern_func1_6 extern_func1_7 extern_func1_8 extern_func1_9 func_1 func_10 func_11 func_12 func_13 func_14 func_15 func_2 func_3 func_4 func_5 func_6 func_7 func_8 func_9 static_func_1 static_func_10 static_func_11 static_func_12 static_func_13 static_func_14 static_func_15 static_func_2 static_func_3 static_func_4 static_func_5 static_func_6 static_func_7 static_func_8 static_func_9} # Test: browser-5.11 # Desc: Check all functions matching regexp "func" in stack1.c gdbtk_test browser-5.11 {all functions matching regexp "func" in stack1.c} { set_search_mode "matches regexp" set_regexp func clear select stack1.c do_search } {func_1 func_10 func_11 func_12 func_13 func_14 func_15 func_2 func_3 func_4 func_5 func_6 func_7 func_8 func_9 static_func_1 static_func_10 static_func_11 static_func_12 static_func_13 static_func_14 static_func_15 static_func_2 static_func_3 static_func_4 static_func_5 static_func_6 static_func_7 static_func_8 static_func_9} # Test: browser-5.12 # Desc: Check all functions matching regexp "func" in stack2.c gdbtk_test browser-5.12 {all functions matching regexp "func" in stack2.c} { set_regexp func clear select stack2.c do_search } {extern_func1_1 extern_func1_10 extern_func1_11 extern_func1_12 extern_func1_13 extern_func1_14 extern_func1_15 extern_func1_2 extern_func1_3 extern_func1_4 extern_func1_5 extern_func1_6 extern_func1_7 extern_func1_8 extern_func1_9} # Test: browser-5.13 # Desc: Check all functions matching regexp "\_1$" gdbtk_test browser-5.13 {all functions matching regexp "\_1$"} { set_search_mode "matches regexp" set_regexp {\_1$} select_all do_search } {extern_func1_1 func_1 static_func_1} # Test: browser-5.14 # Desc: Check all functions matching regexp "\_1$" in stack1.c gdbtk_test browser-5.14 {all functions matching regexp "\_1$" in stack1.c} { set_search_mode "matches regexp" set_regexp {\_1$} clear select stack1.c do_search } {func_1 static_func_1} # Test: browser-5.15 # Desc: Check all functions matching regexp "\_1$" in stack2.c gdbtk_test browser-5.15 {all functions matching regexp "\_1$" in stack2.c} { set_search_mode "matches regexp" set_regexp {\_1$} clear select stack2.c do_search } {extern_func1_1} # Test: browser-5.16 # Desc: Check all functions matching regexp "foobar" gdbtk_test browser-5.16 {all functions matching regexp "foobar"} { set_search_mode "matches regexp" set_regexp foobar select_all do_search } {} # Test: browser-5.17 # Desc: Check all functions matching regexp "foobar" in stack1.c gdbtk_test browser-5.17 {all functions matching regexp "foobar" in stack1.c} { set_search_mode "matches regexp" set_regexp foobar clear select stack1.c do_search } {} # Test: browser-6.1 # Desc: Check select button function gdbtk_test browser-6.1 {select button - select all} { clear select_all set m [$browser component file_box curselection] expr {[llength $m] >= 2} } {1} # Test: browser-6.2 # Desc: Check that search expressions are saved gdbtk_test browser-6.2 {save last search expression} { set_regexp hello select_all do_search pref get gdb/search/last_symbol } {hello} # Test: browser-7.1 # Desc: Toggle all bps on gdbtk_test browser-7.1 {toggle_all_bp on} { set_regexp {\_1$} set_search_mode "matches regexp" select_all set funcs [do_search] # select all to set bp on $browser component func_box selection set 0 end $browser component func_add_bp invoke set bps {} foreach f $funcs { if {![catch {gdb_loc $f} ls]} { if {[bp_exists $ls] != -1} { lappend bps $f } } } catch {gdb_cmd "delete" 0} join [lsort $bps] } {extern_func1_1 func_1 static_func_1} # Test: browser-7.2 # Desc: Toggle some bps off gdbtk_test browser-7.2 {toggle_some_bp off} { set_regexp {\_1$} set_search_mode "matches regexp" select_all set funcs [do_search] $browser component func_box selection set 0 end $browser component func_add_bp invoke # Turn off all the "static_func_*" bps set_regexp {^static.*_1$} do_search $browser component func_box selection set 0 end $browser component func_remove_bp invoke set bps {} foreach f $funcs { if {![catch {gdb_loc $f} ls]} { if {[bp_exists $ls] != -1} { lappend bps $f } } } catch {gdb_cmd "delete" 0} join [lsort $bps] } {extern_func1_1 func_1} # # Exit # gdbtk_test_done