# Basic window tests # Copyright 2001, 2003 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 # Windows to test # FIXME: TfindArgs needs to be updated before it can go in the list... set windows [list BpWin BrowserWin Console DebugWin KodWin LocalsWin \ MemWin ProcessWin RegWin StackWin TdumpWin WatchWin] # Dialogs to test # FIXME: ActionhDlg,TraceDlg cannot be independently opened set dialogs [list About AttachDlg GlobalPref SrcPref TargetSelection] # Helper proc to do all the testing proc do_open_close {num winlist} { set i 1 foreach win $winlist { # Test: windows-$num.* # Desc: Open each window before running set win_obj "" gdbtk_test windows-$num.$i "open $win before running" { set err [catch {ManagedWin::open $win} txt] if {$err} { # display error set txt } else { # display "0" set win_obj $txt set err } } {0} # Update screen update idletasks # Test: windows-{$num+1}.* # Desc: Close each window before running gdbtk_test windows-[expr {$num+1}].$i "close $win before running" { set err [catch {delete object $win_obj} txt] if {$err} { # display error set txt } else { # display "0" set err } } {0} # Update screen update idletasks incr i } } # # Tests start here # # Counter for tests. Increment by 2 after each call to do_open_close. set num 1 # # Check if all windows open with no file loaded # do_open_close $num $windows incr num 2 # Sadly, there is no good way to unpost dialogs (except for setting # an after callback). Until something better comes along, skip them. # do_open_close $num $dialogs # incr num 2 # # Check if all windows open with file loaded # # Load in a file set program [file join $objdir c_variable] 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" } do_open_close $num $windows incr num 2 #do_open_close $num $dialogs incr num 2 # # Check if all windows open after running # # Break in main and run gdb_cmd "break main" gdbtk_test_run do_open_close $num $windows incr num 2 #do_open_close $num $dialogs #incr num 2 # # Exit # gdbtk_test_done