--- /dev/null
+# Copyright 2022 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 'info win'.
+
+tuiterm_env
+
+standard_testfile
+
+Term::clean_restart 24 80
+
+if {![Term::enter_tui]} {
+ unsupported "TUI not supported"
+ return
+}
+
+Term::command "layout src"
+Term::command "info win"
+Term::check_region_contents "info win, layout src" \
+ 0 16 80 8 [multi_line "info win\\s+" \
+ "Name\\s+Lines\\s+Columns\\s+Focus\\s+" \
+ "src\\s+15\\s+80\\s+\\(has focus\\)\\s+" \
+ "status\\s+1\\s+80\\s+" \
+ "cmd\\s+8\\s+80\\s+"]
+
+Term::command "tui new-layout h { -horizontal src 1 asm 1 } 1 status 0 cmd 1"
+Term::command "layout h"
+Term::command "winheight cmd + 3"
+
+# As the tuiterm.exp library just waits for the prompt and command to
+# be echo'ed bcak to the screen, multiple 'info win' calls like this
+# have a problem. Dejagnu will send the command to gdb, but will then
+# immediately see the '(gdb) info win' output from the first use
+# above. This means we end up rushing ahead, and some tests might
+# fail.
+#
+# To work around this, I'm sending a unique command 'p 1' here, that
+# only happens after the second 'info win' call. When the 'p 1'
+# completes, I know the second 'info win' has also completed.
+Term::command "info win"
+Term::command "p 1"
+
+Term::check_region_contents "info win, layout h" \
+ 0 13 80 11 [multi_line "info win\\s+" \
+ "Name\\s+Lines\\s+Columns\\s+Focus\\s+" \
+ "src\\s+12\\s+40\\s+\\(has focus\\)\\s+" \
+ "asm\\s+12\\s+41\\s+" \
+ "status\\s+1\\s+80\\s+" \
+ "cmd\\s+11\\s+80\\s+"]
struct tui_win_info *win_with_focus = tui_win_with_focus ();
struct ui_out *uiout = current_uiout;
- ui_out_emit_table table_emitter (uiout, 3, -1, "tui-windows");
+ ui_out_emit_table table_emitter (uiout, 4, -1, "tui-windows");
uiout->table_header (10, ui_left, "name", "Name");
uiout->table_header (5, ui_right, "lines", "Lines");
+ uiout->table_header (7, ui_right, "columns", "Columns");
uiout->table_header (10, ui_left, "focus", "Focus");
uiout->table_body ();
uiout->field_string ("name", win_info->name ());
uiout->field_signed ("lines", win_info->height);
+ uiout->field_signed ("columns", win_info->width);
if (win_with_focus == win_info)
uiout->field_string ("focus", _("(has focus)"));
else