blob: 1116b570d065caabc07735acd090ded69036397b [file]
# Copyright 2023-2024 Free Software Foundation, 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 3 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, see <http://www.gnu.org/licenses/>.
# Test a prompt one less than, equal to, and one more than screen width in
# TUI.
require allow_tui_tests
tuiterm_env
with_test_prefix "prompt size == width + 1" {
Term::clean_restart 24 40
if {![Term::enter_tui]} {
unsupported "TUI not supported"
return
}
set prompt "123456789A123456789B123456789C123456789D>"
# Set new prompt, and set old prompt back.
send_gdb "set prompt $prompt\n"
send_gdb "set prompt (gdb) \n"
# Expected output:
#
# 16 (gdb) set prompt 123456789A123456789B123
# 17 456789C123456789D>
# 18 123456789A123456789B123456789C123456789D
# 19 >set prompt (gdb)
# 20 (gdb)
gdb_assert { [Term::wait_for "^>set prompt $gdb_prompt "] } \
"got prompt back"
gdb_assert { $Term::_cur_row == 20 }
}
with_test_prefix "prompt size == width + 1: end of screen" {
Term::clean_restart 24 40
if {![Term::enter_tui]} {
unsupported "TUI not supported"
return
}
# Put prompt at last line.
Term::command "echo \\n\\n\\n\\n\\n\\n"
gdb_assert { $Term::_cur_row == 23 } "at last line"
set prompt "123456789A123456789B123456789C123456789D>"
# Set new prompt, and set old prompt back.
send_gdb "set prompt $prompt\n"
send_gdb "set prompt (gdb) \n"
# Expected output:
#
# 19 (gdb) set prompt 123456789A123456789B123
# 20 456789C123456789D>
# 21 123456789A123456789B123456789C123456789D
# 22 >set prompt (gdb)
# 23 (gdb)
gdb_assert { [Term::wait_for "^>set prompt $gdb_prompt "] } \
"got prompt back"
gdb_assert { $Term::_cur_row == 23 } "still at last line"
Term::check_region_contents "scrolling" 0 19 40 1 \
"^$gdb_prompt set prompt 123456789A123456789B123$"
}
with_test_prefix "prompt size == width" {
Term::clean_restart 24 40
if {![Term::enter_tui]} {
unsupported "TUI not supported"
return
}
set prompt "123456789A123456789B123456789C123456789>"
# Set new prompt, and set old prompt back.
send_gdb "set prompt $prompt\n"
send_gdb "set prompt (gdb) \n"
# Expected output:
#
# 16 (gdb) set prompt 123456789A123456789B123
# 17 456789C123456789>
# 18 123456789A123456789B123456789C123456789>
# 19 set prompt (gdb)
# 20 (gdb)
gdb_assert { [Term::wait_for "^set prompt $gdb_prompt "] } \
"got prompt back"
gdb_assert { $Term::_cur_row == 20 }
}
with_test_prefix "prompt size == width - 1" {
Term::clean_restart 24 40
if {![Term::enter_tui]} {
unsupported "TUI not supported"
return
}
set prompt "123456789A123456789B123456789C12345678>"
# Set new prompt, and set old prompt back.
send_gdb "set prompt $prompt\n"
send_gdb "set prompt (gdb) \n"
# Expected output:
#
# 16 (gdb) set prompt 123456789A123456789B123
# 17 456789C12345678>
# 18 123456789A123456789B123456789C12345678>s
# 19 et prompt (gdb)
# 20 (gdb)
gdb_assert { [Term::wait_for "^et prompt $gdb_prompt "] } \
"got prompt back"
gdb_assert { $Term::_cur_row == 20 }
}