1# Copyright 2019-2023 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 18tuiterm_env 19 20standard_testfile 21 22Term::clean_restart 24 80 23 24if {![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 35set 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. 65proc 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. 74proc 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 84foreach 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