# Copyright 1992-2013 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 was written by Michael Snyder (msnyder@cygnus.com)


set testfile "setshow"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile} executable {debug}] != "" } {
     untested setshow.exp
     return -1
}

# Start with a fresh gdb

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

# make sure $pc is sane, in case we're talking to a board.
if { ![runto_main] } {
    gdb_suppress_tests;
}

#
# Test gdb set and show commands.
# Add tests here for show and set that don't fit neatly elsewhere.
# FIXME: many rudimentary tests for set and show commands have been
#        added below, but most do nothing more than check that a 
#        variable has been set successfully, ie. they do not test
#        whether setting the variable has had the desired effect.
#

#test default annotation_level is 0
gdb_test "show annotate" "Annotation_level is 0..*"  "default annotation_level is zero"

#test set annotate 2

# Here we need to fiddle with prompts.
set old_gdb_prompt $gdb_prompt
set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n"

gdb_test_multiple "set annotate 2" "set annotate 2" {
    -re "\r\n$gdb_prompt$" {
	pass "set annotate 2"
    }
}

gdb_test_multiple "show annotate" "show annotate 2" {
    -re ".*\032\032post-prompt.*Annotation_level is 2..*\032\032pre-prompt.*$old_gdb_prompt .*\032\032prompt.*$" {
	pass "show annotate 2"
    }
}

#test annotation_level 2
gdb_test_multiple "info line 1" "annotation_level 2" {
    -re ".*\032\032post-prompt.*Line 1 of .* is at address .* but contains no code.*:1:0:beg:0x.*\032\032pre-prompt.*$old_gdb_prompt .*\032\032prompt.*$" {
	pass "annotation_level 2" 
    }
}

# Restore the original prompt for the rest of the testsuite.
set gdb_prompt $old_gdb_prompt

#test set annotate 1
gdb_test "set annotate 1" ".*post-prompt.*"  "set annotate 1" 
gdb_test "show annotate" "Annotation_level is 1..*"  "show annotate (1)" 
#test annotation_level 1
gdb_test "info line 1" "Line 1 of .* is at address .* but contains no code.*:1:0:beg:0x.*"  "annotation_level 1" 
#test set annotate 0
gdb_test_no_output "set annotate 0" "set annotate 0" 
gdb_test "show annotate" "Annotation_level is 0..*"  "show annotate (0)" 
#test annotation_level 0
gdb_test "info line 1" "Line 1 of .* is at address .* but contains no code.*"  "annotation_level 0" 

gdb_test_no_output "set args ~"
gdb_test "show args" "Argument list to give program being debugged when it is started is \"~\"..*" \
    "show args ~"
#test set args
gdb_test_no_output "set args foo bar blup baz bubble" "set args" 
#test show args
gdb_test "show args" "Argument list to give program being debugged when it is started is \"foo bar blup baz bubble\"..*" "show args"

# Don't test if we can't pass args or if we're using a stub.
if { !$use_gdb_stub && ![target_info exists noargs] } {
    #test passing args
    gdb_test "cont" "Continuing.*" "continuing"
    delete_breakpoints
    gdb_test "run" "Starting program:.*foo bar blup baz bubble.*" "passing args"
}
#test set check range on
gdb_test "set check range on" ".*" "set check range on" 
#test show check range on
gdb_test "show check range" "Range checking is \"on\"\..*" "show check range (on)" 
#test set check range off with trailing space
gdb_test_no_output "set check range off " "set check range off" 
#test show check range off
gdb_test "show check range" "Range checking is \"off\"\..*" "show check range (off)" 
#test set check range auto
gdb_test_no_output "set check range auto" "set check range auto" 
#test show check range auto
gdb_test "show check range" "Range checking is \"auto; currently .*" "show check range (auto)"

# Test set check type on
gdb_test "set check type on" ".*" "set check type on"

# Test show check type on
gdb_test "show check type" "Strict type checking is on\..*" \
    "show check type (on)"

# Test set check type off with trailing space
gdb_test_no_output "set check type off " "set check type off"

# Test show check type off
gdb_test "show check type" "Strict type checking is off\..*" \
    "show check type (off)"

#test set complaints 100
gdb_test_no_output "set complaints 100" "set complaints 100" 
#test show complaints 100
gdb_test "show complaints" "Max number of complaints about incorrect symbols is 100..*" "show complaints (100)" 
#test set complaints 0
gdb_test_no_output "set complaints 0" "set complaints 0" 
#test show complaints 0
gdb_test "show complaints" "Max number of complaints about incorrect symbols is 0..*" "show complaints (0)" 
#test set confirm off
gdb_test_no_output "set confirm off" "set confirm off" 
#test show confirm off
gdb_test "show confirm" "Whether to confirm potentially dangerous operations is off..*" "show confirm (off)" 
#test set confirm on
gdb_test_no_output "set confirm on" "set confirm on" 
#test show confirm on
gdb_test "show confirm" "Whether to confirm potentially dangerous operations is on..*" "show confirm (on)" 
#test set editing off
gdb_test_no_output "set editing off" "set editing off" 
#test show editing off
gdb_test "show editing" "Editing of command lines as they are typed is off..*" "show editing (off)" 
#test set editing on
#gdb_test_no_output "set editing on" "set editing on" 
#test show editing on
#gdb_test "show editing" "Editing of command lines as they are typed is on..*" "show editing (on)" 
#test set environment FOOBARBAZ
gdb_test_no_output "set environment FOOBARBAZ = grbxgrbxgrbx" \
    "set environment FOOBARBAZ" 
#test show environment FOOBARBAZ
gdb_test "show environment FOOBARBAZ" "FOOBARBAZ = grbxgrbxgrbx.*"  "show environment FOOBARBAZ" 
#test set height 100
gdb_test_no_output "set height 100" "set height 100" 
#test show height 100
gdb_test "show height" "Number of lines gdb thinks are in a page is 100..*" "show height" 
# Back to infinite height to avoid pagers.  While at it, check that
# literal "unlimited" works just as well as 0.
gdb_test_no_output "set height unlimited"
#test set history expansion on
gdb_test_no_output "set history expansion on" "set history expansion on" 
#test show history expansion on
gdb_test "show history expansion on" "History expansion on command input is on.*" "show history expansion" 
#test set history filename foobar.baz
gdb_test_no_output "set history filename foobar.baz" \
    "set history filename foobar.baz" 
#test show history filename foobar.baz
gdb_test "show history filename" "The filename in which to record the command history is \"foobar.baz\"..*"  "show history filename (foobar.baz)" 
#test set history save on
gdb_test_no_output "set history save on" "set history save on" 
#test show history save on
gdb_test "show history save" "Saving of the history record on exit is on..*"  "show history save (on)" 
#test set history size 100
gdb_test_no_output "set history size 100" "set history size 100" 
#test show history size 100
gdb_test "show history size" "The size of the command history is 100..*" "show history size (100)" 
#test set language asm
gdb_test "set language asm" ".*" "set language asm" 
#test show language asm
gdb_test "show language" "The current source language is \"asm\"..*" "show language (asm)" 
#test set language java, with a trailing space
gdb_test_no_output "set language java " "set language java"
#test show language java
gdb_test "show language" "The current source language is \"java\"..*" "show language (java)" 
#test completion for set language.
gdb_test "complete set language min" "set language minimal" \
  "complete set language minimal"
#test set language auto
gdb_test_no_output "set language auto" "set language auto" 
#test show language
gdb_test "show language" "The current source language is \"auto.*\"..*" "show language (auto)" 
#test set listsize 100
gdb_test_no_output "set listsize 100" "set listsize 100" 
#test show listsize 100
gdb_test "show listsize" "Number of source lines gdb will list by default is 100..*" "show listsize (100)" 

if ![board_info target exists gdb_prompt] {
    #test set prompt (FooBarBaz) 
    set newprompt "\\(FooBarBaz\\)"

    gdb_test_multiple "set prompt (FooBarBaz) " "set prompt FooBarBaz" {
	-re "\[\r\n\]$newprompt $" {
	    pass "set prompt FooBarBaz"
	}
    }

    #test show prompt (FooBarBaz) 

    gdb_test_multiple "show prompt" "show prompt FooBarBaz" {
	-re "Gdb's prompt is \"$newprompt \"..* $" {
	    pass "show prompt FooBarBaz"
	}
    }

    #test set prompt (gdb) 

    gdb_test_multiple "set prompt (gdb) " "set prompt gdb" {
	-re "\[\r\n\]$gdb_prompt $" {
	    pass "set prompt gdb"
	}
    }
}

#test set radix 11
gdb_test "set radix 11" "Unsupported output radix ``decimal 11''; output radix unchanged..*"  "set radix 11" 
#test set radix 16
gdb_test "set radix 16" "Input and output radices now set to decimal 16, hex 10, octal 20..*"  "set radix 16" 
#test show radix 16
gdb_test "show radix" "Input and output radices set to decimal 16, hex 10, octal 20..*"  "show radix (16)" 
#test set radix 10
gdb_test "set radix" "Input and output radices now set to decimal 10, hex a, octal 12..*"  "set radix 10" 
#test show radix 10
gdb_test "show radix" "Input and output radices set to decimal 10, hex a, octal 12..*" "show radix (10)" 
#test set width 90
gdb_test_no_output "set width 90" "set width 90"
#test show width 90
gdb_test "show width" "Number of characters gdb thinks are in a line is 90..*" "show width (90)" 
#test set write on
# This is only supported on targets which use exec.o.
gdb_test_no_output "set write on" "set write on" 
#test show write on
# This is only supported on targets which use exec.o.
gdb_test "show write" "Writing into executable and core files is on..*" "show write (on)" 
#test show user
gdb_test_no_output "show user" "show user" 
#test set verbose on
gdb_test_no_output "set verbose on" "set verbose on" 
#test show verbose on
gdb_test "show verbose" "Verbose printing of informational messages is on..*" "show verbose (on)" 
#test set verbose off
gdb_test_no_output "set verbose off" "set verbose off" 
#test show verbose off
gdb_test "show verbose" "Verbosity is off..*" "show verbose (off)" 
#test argument must be preceded by space
foreach x {"history file" "solib-search-path" "data-directory"} {
    foreach y {"/home/" "." "~/home" "=home"} {
        gdb_test "set $x$y" "Argument must be preceded by space." \
            "$x is not set to $y"
    }
}
