# Copyright (C) 2010-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/>.

# This file is part of the GDB testsuite.
# It tests gdb.parameter and gdb.Parameter.

load_lib gdb-python.exp

# Start with a fresh gdb.
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir

# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }

# We use "." here instead of ":" so that this works on win32 too.
gdb_test "python print gdb.parameter ('directories')" "$srcdir/$subdir.\\\$cdir.\\\$cwd"

# Test a simple boolean parameter.
gdb_py_test_multiple "Simple gdb booleanparameter" \
   "python" "" \
   "class TestParam (gdb.Parameter):" "" \
   "   \"\"\"When enabled, test param does something useful. When disabled, does nothing.\"\"\"" "" \
   "   show_doc = \"Show the state of the boolean test-param\"" ""\
   "   set_doc = \"Set the state of the boolean test-param\"" "" \
   "   def get_show_string (self, pvalue):" ""\
   "      return \"The state of the Test Parameter is \" + pvalue" ""\
   "   def get_set_string (self):" ""\
   "      val = \"on\"" ""\
   "      if (self.value == False):" ""\
   "         val = \"off\"" ""\
   "      return \"Test Parameter has been set to \" + val" ""\
   "   def __init__ (self, name):" "" \
   "      super (TestParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_BOOLEAN)" "" \
   "      self.value = True" "" \
   "test_param = TestParam ('print test-param')" ""\
   "end"

gdb_test "python print test_param.value" "True" "Test parameter value"
gdb_test "show print test-param" "The state of the Test Parameter is on.*" "Show parameter on"
gdb_test "set print test-param off" "Test Parameter has been set to off" "Turn off parameter"
gdb_test "show print test-param" "The state of the Test Parameter is off.*" "Show parameter off"
gdb_test "python print test_param.value" "False" "Test parameter value"
gdb_test "help show print test-param" "Show the state of the boolean test-param.*" "Test show help"
gdb_test "help set print test-param" "Set the state of the boolean test-param.*" "Test set help"
gdb_test "help set print" "set print test-param -- Set the state of the boolean test-param.*" "Test general help"


# Test an enum parameter.
gdb_py_test_multiple "enum gdb parameter" \
   "python" "" \
   "class TestEnumParam (gdb.Parameter):" "" \
   "   \"\"\"When set, test param does something useful. When disabled, does nothing.\"\"\"" "" \
   "   show_doc = \"Show the state of the enum\"" ""\
   "   set_doc = \"Set the state of the enum\"" "" \
   "   def get_show_string (self, pvalue):" ""\
   "      return \"The state of the enum is \" + pvalue" ""\
   "   def get_set_string (self):" ""\
   "      return \"The state of the enum has been set to \" + self.value" ""\
   "   def __init__ (self, name):" "" \
   "      super (TestEnumParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_ENUM, \[\"one\", \"two\"\])" "" \
   "      self.value = \"one\"" "" \
   "test_enum_param = TestEnumParam ('print test-enum-param')" ""\
   "end"

gdb_test "python print test_enum_param.value" "one" "Test enum parameter value"
gdb_test "show print test-enum-param" "The state of the enum is one.*" "Show parameter is initial value"
gdb_test "set print test-enum-param two" "The state of the enum has been set to two" "Set enum to two"
gdb_test "show print test-enum-param" "The state of the enum is two.*" "Show parameter is new value"
gdb_test "python print test_enum_param.value" "two" "Test enum parameter value"
gdb_test "set print test-enum-param three" "Undefined item: \"three\".*" "Set invalid enum parameter" 

# Test a file parameter.
gdb_py_test_multiple "file gdb parameter" \
   "python" "" \
   "class TestFileParam (gdb.Parameter):" "" \
   "   \"\"\"When set, test param does something useful. When disabled, does nothing.\"\"\"" "" \
   "   show_doc = \"Show the name of the file\"" ""\
   "   set_doc = \"Set the name of the file\"" "" \
   "   def get_show_string (self, pvalue):" ""\
   "      return \"The name of the file is \" + pvalue" ""\
   "   def get_set_string (self):" ""\
   "      return \"The name of the file has been changed to \" + self.value" ""\
   "   def __init__ (self, name):" "" \
   "      super (TestFileParam, self).__init__ (name, gdb.COMMAND_FILES, gdb.PARAM_FILENAME)" "" \
   "      self.value = \"foo.txt\"" "" \
   "test_file_param = TestFileParam ('test-file-param')" ""\
   "end"

gdb_test "python print test_file_param.value" "foo.txt" "Test file parameter value"
gdb_test "show test-file-param" "The name of the file is foo.txt.*" "Show initial file value"
gdb_test "set test-file-param bar.txt" "The name of the file has been changed to bar.txt" "Set new file parameter" 1
gdb_test "show test-file-param" "The name of the file is bar.txt.*" "Show new file value"
gdb_test "python print test_file_param.value" "bar.txt" "Test new file parameter value"
gdb_test "set test-file-param" "Argument required.*" 

# Test a parameter that is not documented.
gdb_py_test_multiple "Simple gdb booleanparameter" \
   "python" "" \
   "class TestUndocParam (gdb.Parameter):" "" \
   "   def get_show_string (self, pvalue):" ""\
   "      return \"The state of the Test Parameter is \" + pvalue" ""\
   "   def get_set_string (self):" ""\
   "      val = \"on\"" ""\
   "      if (self.value == False):" ""\
   "         val = \"off\"" ""\
   "      return \"Test Parameter has been set to \" + val" ""\
   "   def __init__ (self, name):" "" \
   "      super (TestUndocParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_BOOLEAN)" "" \
   "      self.value = True" "" \
   "test_undoc_param = TestUndocParam ('print test-undoc-param')" ""\
   "end"

gdb_test "show print test-undoc-param" "The state of the Test Parameter is on.*" "Show parameter on"
gdb_test "set print test-undoc-param off" "Test Parameter has been set to off" "Turn off parameter"
gdb_test "show print test-undoc-param" "The state of the Test Parameter is off.*" "Show parameter off"
gdb_test "python print test_undoc_param.value" "False" "Test parameter value"
gdb_test "help show print test-undoc-param" "This command is not documented.*" "Test show help"
gdb_test "help set print test-undoc-param" "This command is not documented.*" "Test set help"
gdb_test "help set print" "set print test-undoc-param -- This command is not documented.*" "Test general help"

# Test a parameter that is not documented in any way..
gdb_py_test_multiple "Simple gdb booleanparameter" \
   "python" "" \
   "class TestNodocParam (gdb.Parameter):" "" \
   "   def __init__ (self, name):" "" \
   "      super (TestNodocParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_BOOLEAN)" "" \
   "      self.value = True" "" \
   "test_nodoc_param = TestNodocParam ('print test-nodoc-param')" ""\
   "end"

gdb_test "show print test-nodoc-param" "This command is not documented.*" "Show parameter on"
gdb_test "set print test-nodoc-param off" "This command is not documented.*" "Turn off parameter"
gdb_test "show print test-nodoc-param" "This command is not documented.*.*" "Show parameter off"
gdb_test "python print test_nodoc_param.value" "False" "Test parameter value"
gdb_test "help show print test-nodoc-param" "This command is not documented.*" "Test show help"
gdb_test "help set print test-nodoc-param" "This command is not documented.*" "Test set help"
gdb_test "help set print" "set print test-nodoc-param -- This command is not documented.*" "Test general help"

# Test deprecated API. Do not use in your own implementations.
gdb_py_test_multiple "Simple gdb booleanparameter" \
   "python" "" \
   "class TestParam (gdb.Parameter):" "" \
   "   \"\"\"When enabled, test param does something useful. When disabled, does nothing.\"\"\"" "" \
   "   show_doc = \"State of the Test Parameter\"" ""\
   "   set_doc = \"Set the state of the Test Parameter\"" "" \
   "   def __init__ (self, name):" "" \
   "      super (TestParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_BOOLEAN)" "" \
   "      self.value = True" "" \
   "test_param = TestParam ('print test-param')" ""\
   "end"

gdb_test "python print test_param.value" "True" "Test parameter value"
gdb_test "show print test-param" "State of the Test Parameter on.*" "Show parameter on"
gdb_test "set print test-param off" "Set the state of the Test Parameter.*" "Turn off parameter"
gdb_test "show print test-param" "State of the Test Parameter off.*" "Show parameter off"
gdb_test "python print test_param.value" "False" "Test parameter value"
gdb_test "help show print test-param" "State of the Test Parameter.*" "Test show help"
gdb_test "help set print test-param" "Set the state of the Test Parameter.*" "Test set help"
gdb_test "help set print" "set print test-param -- Set the state of the Test Parameter.*" "Test general help"
