# Copyright 2006-2012 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/>.

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir

# Do a bunch of testing of the set/unset/show substitute-path
# commands that do not require the presence of an executable.

gdb_test_no_output "set confirm off" \
         "deactivate GDB's confirmation interface"

gdb_test "show substitute-path" \
         "List of all source path substitution rules:" \
         "show substitute-path, no rule entered yet"

gdb_test "show substitute-path from" \
         "Source path substitution rule matching `from':" \
         "show substitute-path from, no rule entered yet"

gdb_test "show substitute-path too many" \
         "Too many arguments in command" \
         "show substitute-path, too many arguments"

gdb_test "unset substitute-path from" \
         "No substitution rule defined for `from'" \
         "unset substitute-path from, no rule entered yet"

gdb_test_no_output "unset substitute-path" \
         "unset substitute-path, no rule entered yet"

gdb_test "unset substitute-path from" \
         "No substitution rule defined for `from'" \
         "unset substitute-path from, no rule entered yet"

gdb_test "unset substitute-path from to" \
         "Incorrect usage, too many arguments in command" \
         "unset substitute-path, too many arguments"

gdb_test "set substitute-path too many arguments" \
         "Incorrect usage, too many arguments in command" \
         "set substitute-path, too many arguments"

gdb_test "set substitute-path missing" \
         "Incorrect usage, too few arguments in command" \
         "set substitute-path, too few arguments"

gdb_test "set substitute-path '' to" \
         "First argument must be at least one character long" \
         "set substitute-path, first argument is empty string"

gdb_test_no_output "set substitute-path from to" \
         "add from -> to substitution rule"

gdb_test_no_output "set substitute-path from1 to1/" \
         "add from1 -> to1 substitution rule"

gdb_test_no_output "set substitute-path source destination" \
         "add source -> destination substitution rule"

gdb_test_no_output "set substitute-path depuis/ vers" \
         "add depuis -> vers substitution rule"

gdb_test_no_output "set substitute-path empty ''" \
         "add substitution rule to empty string"

gdb_test "show substitute-path" \
         "List of all source path substitution rules:\r\n +`from' -> `to'.\r\n +`from1' -> `to1'.\r\n +`source' -> `destination'.\r\n\ +`depuis' -> `vers'.\r\n +`empty' -> `'." \
         "show substitute-path after all paths added"

gdb_test "show substitute-path from" \
         "Source path substitution rule matching `from':\r\n +`from' -> `to'." \
         "show substitute-path from, after all paths added"

gdb_test "show substitute-path depuis" \
         "Source path substitution rule matching `depuis':\r\n +`depuis' -> `vers'." \
         "show substitute-path depuis, after all paths added"

gdb_test "show substitute-path garbage" \
         "Source path substitution rule matching `garbage':" \
         "show substitute-path garbage, after all paths added"

gdb_test_no_output "unset substitute-path from" \
         "unset substitute-path from"

gdb_test "show substitute-path from" \
         "Source path substitution rule matching `from':" \
         "show substitute-path from, after unsetting it"

gdb_test "show substitute-path" \
         "List of all source path substitution rules:\r\n +`from1' -> `to1'.\r\n +`source' -> `destination'.\r\n\ +`depuis' -> `vers'.\r\n +`empty' -> `'." \
         "show substitute-path after from rule removed"

gdb_test "unset substitute-path from" \
         "No substitution rule defined for `from'" \
         "unset substitute-path from after the rule was removed"

gdb_test_no_output "unset substitute-path depuis" \
         "unset substitute-path depuis (middle of list)"

gdb_test "show substitute-path" \
         "List of all source path substitution rules:\r\n +`from1' -> `to1'.\r\n +`source' -> `destination'.\r\n\ +`empty' -> `'." \
         "show substitute-path after depuis rule removed"

gdb_test_no_output "unset substitute-path empty" \
         "unset substitute-path empty (end of list)"

gdb_test "show substitute-path" \
         "List of all source path substitution rules:\r\n +`from1' -> `to1'.\r\n +`source' -> `destination'." \
         "show substitute-path after empty rule removed"

gdb_test_no_output "unset substitute-path" \
         "remove all remaining substitution rules"

gdb_test "show substitute-path" \
         "List of all source path substitution rules:" \
         "show substitute-path after all remaining rules removed"


