Add tests for loop_break and loop_continue commands
authorSimon Marchi <simon.marchi@ericsson.com>
Mon, 4 Sep 2017 17:15:59 +0000 (19:15 +0200)
committerSimon Marchi <simon.marchi@ericsson.com>
Mon, 4 Sep 2017 17:15:59 +0000 (19:15 +0200)
I grepped the testsuite for loop_break and loop_continue and didn't find
anything, so I wrote some simple tests for those.

gdb/testsuite/ChangeLog:

* gdb.base/commands.exp: Call the new procedures.
(loop_break_test, loop_continue_test): New procedures.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/commands.exp

index cfcb556..8a6838b 100644 (file)
@@ -1,5 +1,10 @@
 2017-09-04  Simon Marchi  <simon.marchi@ericsson.com>
 
+       * gdb.base/commands.exp: Call the new procedures.
+       (loop_break_test, loop_continue_test): New procedures.
+
+2017-09-04  Simon Marchi  <simon.marchi@ericsson.com>
+
        * gdb.base/commands.exp: Call new procedure.
        (define_if_without_arg_test): New procedure.
 
index 677361a..49a9242 100644 (file)
@@ -1026,6 +1026,47 @@ proc define_if_without_arg_test {} {
     }
 }
 
+# Test the loop_break command.
+
+proc_with_prefix loop_break_test {} {
+    gdb_test_no_output "set \$a = 0" "initialize \$a"
+
+    gdb_test \
+    [multi_line_input \
+        "while \$a < 5" \
+        "  if \$a == 3" \
+        "    loop_break" \
+        "  end" \
+        "  set \$a = \$a + 1" \
+        "end"] \
+    "" \
+    "run while loop"
+
+    gdb_test "print \$a" " = 3" "validate \$a"
+}
+
+# Test the loop_continue command.
+
+proc_with_prefix loop_continue_test {} {
+    gdb_test_no_output "set \$a = 0" "initialize \$a"
+    gdb_test_no_output "set \$b = 0" "initialize \$b"
+
+    gdb_test \
+    [multi_line_input \
+        "while \$a < 5" \
+        "  set \$a = \$a + 1" \
+        "  if \$a % 2 == 0" \
+        "    loop_continue" \
+        "  end" \
+        "  set \$b = \$b + 1" \
+        "end"] \
+    "" \
+    "run while loop"
+
+    gdb_test "print \$a" " = 5" "validate \$a"
+    gdb_test "print \$b" " = 3" "validate \$b"
+}
+
 # Test an input line split with a continuation character (backslash)
 # while entering a multi-line command (in a secondary prompt).
 
@@ -1092,5 +1133,7 @@ error_clears_commands_left
 redefine_hook_test
 backslash_in_multi_line_command_test
 define_if_without_arg_test
+loop_break_test
+loop_continue_test
 # This one should come last, as it redefines "backtrace".
 redefine_backtrace_test