OSDN Git Service

* README: New file.
[pf3gnuchains/pf3gnuchains4x.git] / gdb / testsuite / gdb.gdbtk / srcwin2.test
1 #   Copyright (C) 1999, 2001 Red Hat, Inc.
2 #
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
17 # Please email any bugs, comments, and/or additions to this file to:
18 # bug-gdb@prep.ai.mit.edu
19
20 # This file was written by Martin Hunt (hunt@cygnus.com)
21
22
23 # same as srcwin.test, except test debugging executables
24 # when source files are missing.
25
26 # Read in the standard defs file
27
28 if {![gdbtk_read_defs]} {
29   break
30 }
31
32 global objdir srcdir
33
34 #####                 #####
35 #                         #
36 #  SECTION 1: Mode Tests  #
37 #                         #
38 #####                 #####
39
40 # Load the test executable
41 set program [file join $objdir list]
42 if {[catch {gdbtk_test_file $program} t]} {
43   # This isn't a test case, since if this fails, we're hosed.
44   gdbtk_test_error "loading \"$program\": $t"
45 }
46
47 set srcwin [ManagedWin::open SrcWin]
48 set stw [$srcwin test_get twin]
49 set twin [$stw test_get twin]
50 set statbar [$srcwin test_get _statbar]
51
52 # get things started
53 gdb_cmd "break main"
54 gdbtk_test_run
55
56 # Test: srcwin2-1.1
57 # Desc: Check for something in source window
58 gdbtk_test srcwin2-1.1 "source window has contents" {
59   set r 0
60   set file1(source) [$twin get 1.0 end]
61   if {$file1(source) == ""} {set r -1}
62   if {[$statbar.mode get] != "ASSEMBLY"} {set r -2}
63   set r
64 } {0}
65
66 # Test: srcwin2-1.2
67 # Desc: source->assembly mode change
68 gdbtk_test srcwin2-1.2 "source->assembly mode change" {
69   $srcwin mode "" ASSEMBLY
70   set twin [$stw test_get twin]
71   set file1(assembly) [$twin get 1.0 end]
72   # source == assembly because for there is no source
73   string compare $file1(source) $file1(assembly)
74 } {0}
75
76 # Test: srcwin2-1.3
77 # Desc: assembly->mixed mode change
78 gdbtk_test srcwin2-1.3 "assembly->mixed mode change" {
79   set r 0
80   $srcwin mode "" MIXED
81   set twin [$stw test_get twin]
82   set file1(mixed) [$twin get 1.0 end]
83   # mixed != assembly because the lines with source should
84   # be noted, even if source in unavailable.
85   if {$file1(mixed) == $file1(assembly)} {set r -1}
86   if {[$statbar.mode get] != "MIXED"} {set r -2}
87   set r
88 } {0}
89
90 # Test: srcwin2-1.4
91 # Desc: mixed->src+asm mode change
92 gdbtk_test srcwin2-1.4 "mixed->src+asm mode change" {
93   set r 0
94   # mode change may fail if fallover to ASSEMBLY fails
95   if {[catch {$srcwin mode "" SRC+ASM}]} { set r -5 }
96   set twin [$stw test_get twin]
97   if {[$twin get 1.0 end] != $file1(assembly)} {set r -1}
98   if {[$statbar.mode get] != "ASSEMBLY"} {set r -2}
99   set r
100 } {0}
101
102 # Test: srcwin2-1.5
103 # Desc: src+asm->source mode change
104 gdbtk_test srcwin2-1.5 "src+asm->source mode change" {
105   set r 0
106   $srcwin mode "" SOURCE
107   set twin [$stw test_get twin]
108   if {[$stw test_get bwin] != ""} {set r -2}
109   if {[$twin get 1.0 end] != $file1(assembly)} {set r -1}
110   if {[$statbar.mode get] != "ASSEMBLY"} {set r -3}
111   set r
112 } {0}
113
114 # Test: srcwin2-1.6
115 # Desc: source->mixed mode change
116 gdbtk_test srcwin2-1.6 "source->mixed mode change" {
117   set r 0
118   $srcwin mode "" MIXED
119   set twin [$stw test_get twin]
120   if {[$twin get 1.0 end] != $file1(mixed)} {set r -1}
121   if {[$statbar.mode get] != "MIXED"} {set r -2}
122   set r
123 } {0}
124
125 # Test: srcwin2-1.7
126 # Desc: mixed->source mode change
127 gdbtk_test srcwin2-1.7 "mixed->source mode change" {
128   set r 0
129   $srcwin mode "" SOURCE
130   set twin [$stw test_get twin]
131   if {[$twin get 1.0 end] != $file1(source)} {set r -1}
132   if {[$statbar.mode get] != "ASSEMBLY"} {set r -2}
133   set r
134 } {0}
135
136 # Test: srcwin2-1.8
137 # Desc: source->src+asm mode change
138 gdbtk_test srcwin2-1.8 "source->src+asm mode change" {
139   set r 0
140   # mode change may fail if fallover to ASSEMBLY fails
141   if {[catch {$srcwin mode "" SRC+ASM}]} { set r -5 }
142   set twin [$stw test_get twin]
143   set bwin [$stw test_get bwin]
144   if {[$twin get 1.0 end] != $file1(assembly)} {set r -1}
145   if {$bwin != ""} {set r -2}
146   if {[$statbar.mode get] != "ASSEMBLY"} {set r -3}
147   set r
148 } {0}
149
150 # Test: srcwin2-1.9
151 # Desc: src+asm->assembly mode change
152 gdbtk_test srcwin2-1.9 "src+asm->assembly mode change" {
153   set r 0
154   $srcwin mode "" ASSEMBLY
155   set twin [$stw test_get twin]
156   if {[$twin get 1.0 end] != $file1(assembly)} {set r -1}
157   if {[$statbar.mode get] != "ASSEMBLY"} {set r -2}
158   set r
159 } {0}
160
161 # Test: srcwin2-1.10
162 # Desc: assembly->src+asm mode change
163 gdbtk_test srcwin2-1.10 "assembly->src+asm mode change" {
164   set r 0
165   # mode change may fail if fallover to ASSEMBLY fails
166   if {[catch {$srcwin mode "" SRC+ASM}]} { set r -5 }
167   set twin [$stw test_get twin]
168   set bwin [$stw test_get bwin]
169   if {[$twin get 1.0 end] != $file1(assembly)} {set r -1}
170   if {$bwin != ""} {set r -2}
171   if {[$statbar.mode get] != "ASSEMBLY"} {set r -3}
172   set r
173 } {0}
174
175 # Test: srcwin2-1.11
176 # Desc: src+asm->mixed mode change
177 gdbtk_test srcwin2-1.11 "src+asm->mixed mode change" {
178   set r 0
179   $srcwin mode "" MIXED
180   set twin [$stw test_get twin]
181   if {[$twin get 1.0 end] != $file1(mixed)} {set r -1}
182   if {[$statbar.mode get] != "MIXED"} {set r -2}
183   set r
184 } {0}
185
186 # Test: srcwin2-1.12
187 # Desc: mixed->assembly mode change
188 gdbtk_test srcwin2-1.12 "mixed->assembly mode change" {
189   set r 0
190   $srcwin mode "" ASSEMBLY
191   set twin [$stw test_get twin]
192   if {[$twin get 1.0 end] != $file1(assembly)} {set r -1}
193   if {[$statbar.mode get] != "ASSEMBLY"} {set r -2}
194   set r
195 } {0}
196
197 # Test: srcwin2-1.13
198 # Desc: assembly->source mode change
199 gdbtk_test srcwin2-1.13 "assembly->source mode change" {
200   set r 0
201   $srcwin mode "" SOURCE
202   set twin [$stw test_get twin]
203   if {[$twin get 1.0 end] != $file1(source)} {set r -1}
204   if {[$statbar.mode get] != "ASSEMBLY"} {set r -2}
205   set r
206 } {0}
207
208
209 #####                       #####
210 #                               #
211 #  SECTION 2: Basic Operations  #
212 #                               #
213 #####                       #####
214
215 # Test: srcwin2-2.1
216 # Desc: check contents of filename combobox
217 gdbtk_test srcwin2-2.1 "check contents of filename combobox" {
218   set names [$statbar.name listget 0 end]
219   set r 0
220   foreach f {list0.c list1.c list0.h} {
221     if {[lsearch $names $f] != -1} {
222       incr r
223     }
224   }
225   set r
226 } {3}
227
228 # Test: srcwin2-2.2
229 # Desc: check contents of function combobox
230 gdbtk_test srcwin2-2.2 "check contents of function combobox" {
231   set names [$statbar.func listget 0 end]
232   set r 0
233   foreach f {main foo unused} {
234     if {[lsearch $names $f] != -1} {
235       incr r
236     }
237   }
238   set r
239 } {3}
240
241 # Test: srcwin2-2.3
242 # Desc: goto filename
243 gdbtk_test srcwin2-2.3 "goto filename" {
244   set func [$srcwin test_get _name 1]
245   $func "" list1.c
246   set twin [$stw test_get twin]
247   set file2(source) [$twin get 1.0 end]
248   expr {![string compare $file1(source) $file2(source)]}
249 } {0}
250
251 # Test: srcwin2-2.4
252 # Desc: check contents of function combobox
253 gdbtk_test srcwin2-2.4 "check contents of function combobox" {
254   set names [$statbar.func listget 0 end]
255   set r 0
256   foreach f {bar long_line oof unused} {
257     if {[lsearch $names $f] != -1} {
258       incr r
259     }
260   }
261   set r
262 } {4}
263
264 # Test: srcwin2-2.5
265 # Desc: function combobox entry field should be empty after switching to a new file
266 gdbtk_test srcwin2-2.5 "function combobox entry field should be empty" {
267   set names [$statbar.func get]
268   string length $names
269 } {0}
270
271 # Test: srcwin2-2.6
272 # Desc: goto function
273 gdbtk_test srcwin2-2.6 "goto function bar" {
274   $srcwin goto_func "" bar
275   set r 0
276
277   # now get a dump of all tags and check that only one line is
278   # marked BROWSE_TAG and no lines are STACK_TAG or PC_TAG.
279
280   # We know that list1.c should have BROWSE_TAG set at index 10.2
281   # for function "bar".  If list1.c is changed or the layout of the source
282   # window is changed, this must be updated.
283   if {![catch {set z [$twin dump -tag 1.0 end]}]} {
284     foreach {k v i} $z {
285       if {$k == "tagon"} {
286         if {$v == "BROWSE_TAG"} {
287           if {$i == "10.2"} {
288             incr r
289           } else {
290             incr r 5
291           }
292         }
293         if {$v == "STACK_TAG"} { incr r 10}
294         if {$v == "PC_TAG"} { incr r 100}
295       }
296     }
297   } else {
298     set r -1
299   }
300
301   if {$r == 1} {
302     # things are OK so far, so just verify the function name is displayed
303     # in the combobox entry field.
304     set names [$statbar.func get]
305     if {[string compare $names "bar"]} {set r -2}
306   }
307   set r
308 } {1}
309
310 # Test: srcwin2-2.7
311 # Desc: goto function "oof". This tests that the correct line is highlighted
312 # with BROWSE_TAG and no other lines are highlighted. It also checks that
313 # the combobox has the correct function name in it.  Finally, list1.c
314 # has an extremely long line, line 32, that breaks some functions.  We verify 
315 # that the GDBtk has the correct line number.
316
317 gdbtk_test srcwin2-2.7 "goto function oof" {
318   $srcwin goto_func "" oof
319   set r 0
320
321   # now get a dump of all tags and check that only one line is
322   # marked BROWSE_TAG and no lines are STACK_TAG or PC_TAG.
323
324   # We know that list1.c should have BROWSE_TAG set at index 38.2
325   # for function "oof".  If list1.c is changed or the layout of the source
326   # window is changed, this must be updated.
327   if {![catch {set z [$twin dump -tag 1.0 end]}]} {
328     foreach {k v i} $z {
329       if {$k == "tagon"} {
330         if {$v == "BROWSE_TAG"} {
331           if {$i == "38.2"} {
332             set line_number [$twin get "$i wordstart" "$i wordend"]
333             if {$line_number == "38"} {
334               incr r
335             } else {
336               incr r -100
337             }
338           } else {
339             incr r 5
340           }
341         }
342         if {$v == "STACK_TAG"} {incr r 10}
343         if {$v == "PC_TAG"} {incr r 100}
344       }
345     }
346   } else {
347     set r -1
348   }
349
350   if {$r == 1} {
351     # things are OK so far, so just verify the function name is displayed
352     # in the combobox entry field.
353     set names [$statbar.func get]
354     if {[string compare $names "oof"]} {set r -2}
355   }
356   set r
357 } {1}
358
359 # Test: srcwin2-2.8
360 # Desc: This test issues a next command while browsing list1.c.
361 # It should display list0.c and highlight the correct line.
362 gdbtk_test srcwin2-2.8 "step while browsing" {
363   gdb_immediate "next" 1
364   set r 0
365   set name [$statbar.name get]
366   set func [$statbar.func get]
367
368   # check contents of name and function comboboxes
369   if {$name != "list0.c"} {set r -1}
370   if {$func != "main"} {set r -2}
371
372   # check that correct file is displayed
373   set twin [$stw test_get twin]
374   set a [$twin get 1.0 end]
375   if {[string compare $file1(source) $a]} {set r -3}
376
377   # check for PC_TAG
378   if {$r == 0} {
379     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
380       foreach {k v i} $z {
381         if {$k == "tagon"} {
382           if {$v == "PC_TAG"} {
383             incr r
384           }
385           if {$v == "STACK_TAG"} {incr r 10}
386           if {$v == "BROWSE_TAG"} {incr r 100}
387         }
388       }
389     } else {
390       set r -4
391     }
392   }
393   set r
394 } {1}
395
396 # Test: srcwin2-2.11
397 # Desc: This test issues a break and a continue
398 gdbtk_test srcwin2-2.11 "set BP and continue" {
399   gdb_immediate "break oof" 1
400   gdb_immediate "continue" 1
401   set r 0
402   set name [$statbar.name get]
403   set func [$statbar.func get]
404
405   # check contents of name and function comboboxes
406   if {$name != "list1.c"} {set r -1}
407   if {$func != "oof"} {set r -2}
408
409   # check that the correct file is displayed
410   # we must clear the breakpoint first so it doesn't mess up the
411   # comparison...
412   gdb_immediate "clear oof" 1  
413   set twin [$stw test_get twin]
414   set a [$twin get 1.0 end]
415   if {[string compare $file2(source) $a]} {set r -3}
416   
417   # check for PC_TAG on correct line
418   if {$r == 0} {
419     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
420       foreach {k v i} $z {
421         if {$k == "tagon"} {
422           if {$v == "PC_TAG"} {
423             if {$i == "38.2"} {
424               incr r
425             } else {
426               incr r 5
427             }
428           }
429           if {$v == "STACK_TAG"} {incr r 10}
430           if {$v == "BROWSE_TAG"} {incr r 100}
431         }
432       }
433     } else {
434       set r -4
435     }
436   }
437   set r
438 } {1}
439
440 #####                       #####
441 #                               #
442 #  SECTION 3: Stack Operations  #
443 #                               #
444 #####                       #####
445
446 # Test: srcwin2-3.1
447 # Desc: This tests "stack up" 
448 gdbtk_test srcwin2-3.1 "stack up (1)" {
449   $srcwin stack up
450   set r 0
451   set name [$statbar.name get]
452   set func [$statbar.func get]
453
454   # check contents of name and function comboboxes
455   if {$name != "list1.c"} {set r -1}
456   if {$func != "long_line"} {set r -2}
457
458   # check that the correct file is displayed
459   set twin [$stw test_get twin]
460   set a [$twin get 1.0 end]
461   if {[string compare $file2(source) $a]} {set r -3}
462   
463   # check for PC_TAG and STACK_TAG on correct lines
464   if {$r == 0} {
465     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
466       foreach {k v i} $z {
467         if {$k == "tagon"} {
468           if {$v == "PC_TAG"} {
469             if {$i == "38.2"} {
470               incr r
471             } else {
472               incr r 5
473             }
474           }
475           if {$v == "STACK_TAG"} {
476             if {$i == "26.2"} {
477               incr r
478             } else {
479               incr r 10
480             }
481           }
482           if {$v == "BROWSE_TAG"} {incr r 100}
483         }
484       }
485     } else {
486       set r -4
487     }
488   }
489   set r
490 } {2}
491
492 # Test: srcwin2-3.2
493 # Desc: Another "stack up"  test
494 gdbtk_test srcwin2-3.2 "stack up (2)" {
495   $srcwin stack up
496   set r 0
497   set name [$statbar.name get]
498   set func [$statbar.func get]
499
500   # check contents of name and function comboboxes
501   if {$name != "list1.c"} {set r -1}
502   if {$func != "bar"} {set r -2}
503
504   # check that the correct file is displayed
505   set twin [$stw test_get twin]
506   set a [$twin get 1.0 end]
507   if {[string compare $file2(source) $a]} {set r -3}
508   
509   # check for PC_TAG and STACK_TAG on correct lines
510   if {$r == 0} {
511     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
512       foreach {k v i} $z {
513         if {$k == "tagon"} {
514           if {$v == "PC_TAG"} {
515             if {$i == "38.2"} {
516               incr r
517             } else {
518               incr r 5
519             }
520           }
521           if {$v == "STACK_TAG"} {
522             if {$i == "12.2"} {
523               incr r
524             } else {
525               incr r 10
526             }
527           }
528           if {$v == "BROWSE_TAG"} {incr r 100}
529         }
530       }
531     } else {
532       set r -4
533     }
534   }
535   set r
536 } {2}
537
538 # Test: srcwin2-3.3
539 # Desc: Another "stack up"  test
540 gdbtk_test srcwin2-3.3 "stack up (3)" {
541   $srcwin stack up
542   set r 0
543   set name [$statbar.name get]
544   set func [$statbar.func get]
545
546   # check contents of name and function comboboxes
547   if {$name != "list0.h"} {set r -1}
548   if {$func != "foo"} {set r -2}
549
550   # check that the correct file is displayed
551   set twin [$stw test_get twin]
552   set file3(source) [$twin get 1.0 end]
553   if {![string compare $file2(source) $file3(source)]} {set r -3}
554   
555   # check for PC_TAG and STACK_TAG on correct lines
556   if {$r == 0} {
557     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
558       foreach {k v i} $z {
559         if {$k == "tagon"} {
560           if {$v == "STACK_TAG"} {
561             if {$i == "9.2"} {
562               incr r
563             } else {
564               incr r 5
565             }
566           }
567           if {$v == "PC_TAG"} {incr r 10}
568           if {$v == "BROWSE_TAG"} {incr r 100}
569         }
570       }
571     } else {
572       set r -4
573     }
574   }
575   set r
576 } {1}
577
578 # Test: srcwin2-3.4
579 # Desc: Another "stack up"  test
580 gdbtk_test srcwin2-3.4 "stack up (4)" {
581   $srcwin stack up
582   set r 0
583   set name [$statbar.name get]
584   set func [$statbar.func get]
585
586   # check contents of name and function comboboxes
587   if {$name != "list0.c"} {set r -1}
588   if {$func != "main"} {set r -2}
589
590   # check that the correct file is displayed
591   set twin [$stw test_get twin]
592   set a [$twin get 1.0 end]
593   if {[string compare $file1(source) $a]} {set r -3}
594   
595   # check for STACK_TAG
596   if {$r == 0} {
597     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
598       foreach {k v i} $z {
599         if {$k == "tagon"} {
600           if {$v == "STACK_TAG"} {
601             incr r
602           }
603           if {$v == "PC_TAG"} {incr r 10}
604           if {$v == "BROWSE_TAG"} {incr r 100}
605         }
606       }
607     } else {
608       set r -4
609     }
610   }
611   set r
612 } {1}
613
614
615 # Disabled for now because there are different correct results.
616 # Test should be rewritten to include those.
617 # Test: srcwin2-3.5
618 # Desc: "stack up" when we are at the top
619 #gdbtk_test srcwin2-3.5 "stack up when at the top" {
620 # $srcwin stack up
621 #  set r 0
622 #  set name [$statbar.name get]
623 #  set func [$statbar.func get]
624
625   # check contents of name and function comboboxes
626 #  if {$name != "list0.c"} {set r -1}
627 #  if {$func != "main"} {set r -2}
628
629   # check that the correct file is displayed
630 #  set twin [$stw test_get twin]
631 #  set a [$twin get 1.0 end]
632 #  if {[string compare $file1(source) $a]} {set r -3}
633   
634   # check for STACK_TAG
635 #  if {$r == 0} {
636 #    if {![catch {set z [$twin dump -tag 1.0 end]}]} {
637 #      foreach {k v i} $z {
638 #       if {$k == "tagon"} {
639 #         if {$v == "STACK_TAG"} {
640 #           incr r
641 #         }
642 #         if {$v == "PC_TAG"} {incr r 10}
643 #         if {$v == "BROWSE_TAG"} {incr r 100}
644 #       }
645 #      }
646 #    } else {
647 #      set r -4
648 #    }
649 #  }
650 #  set r
651 #} {1}
652
653 # Test: srcwin2-3.6
654 # Desc: "stack down"  test
655 gdbtk_test srcwin2-3.6 "stack down" {
656   $srcwin stack down
657   set r 0
658   set name [$statbar.name get]
659   set func [$statbar.func get]
660
661   # check contents of name and function comboboxes
662   if {$name != "list0.h"} {set r -1}
663   if {$func != "foo"} {set r -2}
664
665   # check that the correct file is displayed
666   set twin [$stw test_get twin]
667   set a [$twin get 1.0 end]
668   if {![string compare $file2(source) $a]} {set r -3}
669   
670   # check for PC_TAG and STACK_TAG on correct lines
671   if {$r == 0} {
672     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
673       foreach {k v i} $z {
674         if {$k == "tagon"} {
675           if {$v == "STACK_TAG"} {
676             if {$i == "9.2"} {
677               incr r
678             } else {
679               incr r 5
680             }
681           }
682           if {$v == "PC_TAG"} {incr r 10}
683           if {$v == "BROWSE_TAG"} {incr r 100}
684         }
685       }
686     } else {
687       set r -4
688     }
689   }
690   set r
691 } {1}
692
693 # Test: srcwin2-3.7
694 # Desc: "stack bottom"  test
695 gdbtk_test srcwin2-3.7 "stack bottom" {
696   $srcwin stack bottom
697   set r 0
698   set name [$statbar.name get]
699   set func [$statbar.func get]
700
701   # check contents of name and function comboboxes
702   if {$name != "list1.c"} {set r -1}
703   if {$func != "oof"} {set r -2}
704
705   # check that the correct file is displayed
706   set twin [$stw test_get twin]
707   set a [$twin get 1.0 end]
708   if {[string compare $file2(source) $a]} {set r -3}
709   
710   # check for PC_TAG on correct line
711   if {$r == 0} {
712     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
713       foreach {k v i} $z {
714         if {$k == "tagon"} {
715           if {$v == "PC_TAG"} {
716             if {$i == "38.2"} {
717               incr r
718             } else {
719               incr r 5
720             }
721           }
722           if {$v == "STACK_TAG"} {incr r 10}
723           if {$v == "BROWSE_TAG"} {incr r 100}
724         }
725       }
726     } else {
727       set r -4
728     }
729   }
730   set r
731 } {1}
732
733 # Test: srcwin2-3.8
734 # Desc: "stack down" when at bottom
735 gdbtk_test srcwin2-3.8 "stack down when at bottom" {
736   $srcwin stack down
737   set r 0
738   set name [$statbar.name get]
739   set func [$statbar.func get]
740
741   # check contents of name and function comboboxes
742   if {$name != "list1.c"} {set r -1}
743   if {$func != "oof"} {set r -2}
744
745   # check that the correct file is displayed
746   set twin [$stw test_get twin]
747   set a [$twin get 1.0 end]
748   if {[string compare $file2(source) $a]} {set r -3}
749   
750   # check for PC_TAG on correct line
751   if {$r == 0} {
752     if {![catch {set z [$twin dump -tag 1.0 end]}]} {
753       foreach {k v i} $z {
754         if {$k == "tagon"} {
755           if {$v == "PC_TAG"} {
756             if {$i == "38.2"} {
757               incr r
758             } else {
759               incr r 5
760             }
761           }
762           if {$v == "STACK_TAG"} {incr r 10}
763           if {$v == "BROWSE_TAG"} {incr r 100}
764         }
765       }
766     } else {
767       set r -4
768     }
769   }
770   set r
771 } {1}
772
773 # 4.1 bp, multiple, balloon, etc
774
775 # Test: srcwin2-4.1
776 # Desc: Set BP in another file. Tests bp and cache functions
777 gdbtk_test srcwin2-4.1 "set BP in another file" {
778   gdb_immediate "break foo" 1
779   $srcwin goto_func "" foo
780   set r 0
781   set name [$statbar.name get]
782   set func [$statbar.func get]
783
784   # check contents of name and function comboboxes
785   if {$name != "list0.h"} {set r -1}
786   if {$func != "foo"} {set r -2}
787
788   set twin [$stw test_get twin]
789   
790   # check for BROWSE_TAG and BP image on correct line
791   if {$r == 0} {
792     if {![catch {set z [$twin dump 1.0 end]}]} {
793       foreach {k v i} $z {
794         if {$k == "tagon"} {
795           if {$v == "BROWSE_TAG"} {
796             if {$i == "9.2"} {
797               incr r
798             } else {
799               incr r 5
800             }
801           }
802           if {$v == "STACK_TAG"} {incr r 10}
803           if {$v == "PC_TAG"} {incr r 100}
804         } elseif {$k == "image"} {
805           if {$i == "9.0"} {
806             incr r
807           } else {
808             set r -200
809           }
810         }
811       }
812     } else {
813       set r -4
814     }
815   }
816   
817   if {$r == 2} {
818     # clear BP and compare with previous contents. This should succeed,
819     gdb_immediate "clear foo" 1
820     set a [$twin get 1.0 end]
821     if {[string compare $file3(source) $a]} {set r -3}
822   }
823   
824   set r
825 } {2}
826
827 # Test: srcwin2-4.2
828 # Desc: Test temporary BP
829 gdbtk_test srcwin2-4.2 "temporary BP" {
830   set r 0
831   if {[catch {gdb_immediate "tbreak foo" 1} msg]} {
832     set r -500
833   }
834   set name [$statbar.name get]
835   set func [$statbar.func get]
836   
837   # check contents of name and function comboboxes
838   if {$name != "list0.h"} {set r -1}
839   if {$func != "foo"} {set r -2}
840
841   set twin [$stw test_get twin]
842   
843   # check for BROWSE_TAG and BP image on correct line
844   if {$r == 0} {
845     if {![catch {set z [$twin dump 1.0 end]}]} {
846       foreach {k v i} $z {
847         if {$k == "tagon"} {
848           if {$v == "BROWSE_TAG"} {
849             if {$i == "9.2"} {
850               incr r
851             } else {
852               incr r 5
853             }
854           }
855           if {$v == "STACK_TAG"} {incr r 10}
856           if {$v == "PC_TAG"} {incr r 100}
857         } elseif {$k == "image"} {
858           if {$i == "9.0"} {
859             incr r
860           } else {
861             set r -200
862           }
863         }
864       }
865     } else {
866       set r -4
867     }
868   }
869   
870   gdb_immediate "continue" 1
871   
872   # now check for PC_TAG and no image
873   if {$r == 2} {
874     if {![catch {set z [$twin dump 1.0 end]}]} {
875       foreach {k v i} $z {
876         if {$k == "tagon"} {
877           if {$v == "PC_TAG"} {
878             if {$i == "9.2"} {
879               incr r
880             } else {
881               incr r 5
882             }
883           }
884           if {$v == "STACK_TAG"} {incr r 10}
885           if {$v == "BROWSE_TAG"} {incr r 100}
886         } elseif {$k == "image"} {
887           set r -200
888         }
889       }
890     } else {
891       set r -4
892     }
893   }
894   
895   set r
896 } {3}
897
898 gdbtk_test_done