Home | History | Annotate | Line # | Download | only in gdb.tui
      1 # Copyright 2019-2024 Free Software Foundation, 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 3 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, see <http://www.gnu.org/licenses/>.
     15 
     16 # Test TUI resizing with empty windows.
     17 
     18 tuiterm_env
     19 
     20 standard_testfile
     21 
     22 Term::clean_restart 24 80
     23 
     24 if {![Term::enter_tui]} {
     25     unsupported "TUI not supported"
     26     return
     27 }
     28 
     29 # Each entry describes a layout.  It has these items:
     30 # 1. Layout name
     31 # 2. Test name
     32 # 3. List of boxes in 80x24 mode
     33 # 4. List of boxes in 90x40 mode
     34 # 5. List of test name and text for the empty window
     35 set layouts {
     36     {src src {{0 0 80 15}} {{0 0 90 26}}
     37 	{{"no source" "No Source Available"}}}
     38     {regs src-regs {{0 0 80 8} {0 7 80 8}} {{0 0 90 13} {0 12 90 13}}
     39 	{
     40 	    {"no source" "No Source Available"}
     41 	    {"no regs" "Register Values Unavailable"}
     42 	}}
     43     {asm asm {{0 0 80 15}} {{0 0 90 26}}
     44 	{
     45 	    {"no asm" "No Assembly Available"}
     46 	}}
     47     {regs asm-regs {{0 0 80 8} {0 7 80 8}} {{0 0 90 13} {0 12 90 13}}
     48 	{
     49 	    {"no asm" "No Assembly Available"}
     50 	    {"no regs" "Register Values Unavailable"}
     51 	}}
     52     {split split {{0 0 80 8} {0 7 80 8}} {{0 0 90 13} {0 12 90 13}}
     53 	{
     54 	    {"no source" "No Source Available"}
     55 	    {"no asm" "No Assembly Available"}
     56 	}}
     57     {regs split-regs {{0 0 80 8} {0 7 80 8}} {{0 0 90 13} {0 12 90 13}}
     58 	{
     59 	    {"no asm" "No Assembly Available"}
     60 	    {"no regs" "Register Values Unavailable"}
     61 	}}
     62 }
     63 
     64 # Helper function to verify a list of boxes.
     65 proc check_boxes {boxes} {
     66     set boxno 1
     67     foreach box $boxes {
     68 	eval Term::check_box [list "box $boxno"] $box
     69 	incr boxno
     70     }
     71 }
     72 
     73 # Helper function to verify text.
     74 proc check_text {text_list} {
     75     set text [Term::get_all_lines]
     76     foreach item $text_list {
     77 	lassign $item testname check
     78 	if {![gdb_assert {[regexp -- $check $text]} $testname]} {
     79 	    Term::dump_screen
     80 	}
     81     }
     82 }
     83 
     84 foreach layout $layouts {
     85     lassign $layout name testname small_boxes large_boxes text_list
     86 
     87     with_test_prefix $testname {
     88 	Term::command "layout $name"
     89 	with_test_prefix 80x24 {
     90 	    check_boxes $small_boxes
     91 	    check_text $text_list
     92 	}
     93 
     94 	Term::resize 40 90
     95 	with_test_prefix 90x40 {
     96 	    check_boxes $large_boxes
     97 	    check_text $text_list
     98 	}
     99 	Term::resize 24 80
    100 	with_test_prefix "80x24 again" {
    101 	    check_boxes $small_boxes
    102 	    check_text $text_list
    103 	}
    104     }
    105 }
    106