# Copyright (C) 1998 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

# This file was written by Elena Zannoni (ezannoni@cygnus.com)

# This file is part of the gdb testsuite
#
# tests for all the assignemnt operators
# with mixed types and with int type variables
# 

if $tracelevel then {
	strace $tracelevel
	}

#
# test running programs
#
set prms_id 0
set bug_id 0

set testfile "all-types"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
    }



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


#
# set it up at a breakpoint so we can play with the variable values
#

if ![runto_main] then {
    perror "couldn't run to breakpoint"
    continue
}

gdb_test "next" "return 0;" "continuing after dummy()"

send_gdb "print v_int=57\n"
gdb_expect {
    -re ".*57.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*57.*$gdb_prompt $" {
                pass "v_int=57"
              }
            -re ".*$gdb_prompt $" { fail "v_int=57" }
            timeout           { fail "(timeout) v_int=57" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int=57" }
    timeout           { fail "(timeout) v_int=57" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"


send_gdb "print v_int+=57\n"
gdb_expect {
    -re ".*63.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*63.*$gdb_prompt $" {
                pass "v_int+=57"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=57" }
            timeout           { fail "(timeout) v_int+=57" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=57" }
    timeout           { fail "(timeout) v_int+=57" }    
  }

gdb_test "set variable v_int = 6" "" "set v_int to 6"

send_gdb "print v_int-=57\n"
gdb_expect {
    -re ".*-51.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*-51.*$gdb_prompt $" {
                pass "v_int-=57"
              }
            -re ".*$gdb_prompt $" { fail "v_int-=57" }
            timeout           { fail "(timeout) v_int-=57" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int-=57" }
    timeout           { fail "(timeout) v_int-=57" }    
  }

gdb_test "set variable v_int = 6" "" "set v_int to 6"

send_gdb "print v_int*=5\n"
gdb_expect {
    -re ".*30.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*30.*$gdb_prompt $" {
                pass "v_int*=5"
              }
            -re ".*$gdb_prompt $" { fail "v_int*=5" }
            timeout           { fail "(timeout) v_int*=5" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int*=5" }
    timeout           { fail "(timeout) v_int*=5" }    
  }

gdb_test "set variable v_int = 6" "" "set v_int to 6"

send_gdb "print v_int/=4\n"
gdb_expect {
    -re ".*1.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*1.*$gdb_prompt $" {
                pass "v_int/=4"
              }
            -re ".*$gdb_prompt $" { fail "v_int/=4" }
            timeout           { fail "(timeout) v_int/=4" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int/=4" }
    timeout           { fail "(timeout) v_int/=4" }    
  }



gdb_test "set variable v_int = 6" "" "set v_int to 6"

send_gdb "print v_int%=4\n"
gdb_expect {
    -re ".*2.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*2.*$gdb_prompt $" {
                pass "v_int%=4"
              }
            -re ".*$gdb_prompt $" { fail "v_int%=4" }
            timeout           { fail "(timeout) v_int%=4" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int%=4" }
    timeout           { fail "(timeout) v_int%=4" }    
  }



gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_char\n"
gdb_expect {
    -re ".*71.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*71.*$gdb_prompt $" {
                pass "v_int+=char"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_char" }
            timeout           { fail "(timeout) v_int+=v_char" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_char" }
    timeout           { fail "(timeout) v_int+=v_char" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_signed_char\n"
gdb_expect {
    -re ".*72.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*72.*$gdb_prompt $" {
                pass "v_int+=signed_char"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_signed_char" }
            timeout           { fail "(timeout) v_int+=v_signed_char" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_char" }
    timeout           { fail "(timeout) v_int+=v_signed_char" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_unsigned_char\n"
gdb_expect {
    -re ".*73.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*73.*$gdb_prompt $" {
                pass "v_int+=unsigned_char"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_char" }
            timeout           { fail "(timeout) v_int+=v_unsigned_char" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_char" }
    timeout           { fail "(timeout) v_int+=v_unsigned_char" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_short\n"
gdb_expect {
    -re ".*9.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*9.*$gdb_prompt $" {
                pass "v_int+=short"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_short" }
            timeout           { fail "(timeout) v_int+=v_short" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_short" }
    timeout           { fail "(timeout) v_int+=v_short" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_signed_short\n"
gdb_expect {
    -re ".*10.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*10.*$gdb_prompt $" {
                pass "v_int+=signed_short"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_signed_short" }
            timeout           { fail "(timeout) v_int+=v_signed_short" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_short" }
    timeout           { fail "(timeout) v_int+=v_signed_short" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_unsigned_short\n"
gdb_expect {
    -re ".*11.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*11.*$gdb_prompt $" {
                pass "v_int=+unsigned_short"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_short" }
            timeout           { fail "(timeout) v_int+=v_unsigned_short" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_short" }
    timeout           { fail "(timeout) v_int+=v_unsigned_short" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_signed_int\n"
gdb_expect {
    -re ".*13.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*13.*$gdb_prompt $" {
                pass "v_int+=signed_int"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_signed_int" }
            timeout           { fail "(timeout) v_int+=v_signed_int" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_int" }
    timeout           { fail "(timeout) v_int+=v_signed_int" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_unsigned_int\n"
gdb_expect {
    -re ".*14.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*14.*$gdb_prompt $" {
                pass "v_int+=unsigned_int"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_int" }
            timeout           { fail "(timeout) v_int+=v_unsigned_int" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_int" }
    timeout           { fail "(timeout) v_int+=v_unsigned_int" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_long\n"
gdb_expect {
    -re ".*15.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*15.*$gdb_prompt $" {
                pass "v_int+=long"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_long" }
            timeout           { fail "(timeout) v_int+=v_long" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_long" }
    timeout           { fail "(timeout) v_int+=v_long" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"



send_gdb "print v_int+=v_signed_long\n"
gdb_expect {
    -re ".*16.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*16.*$gdb_prompt $" {
                pass "v_int+=signed_long"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_signed_long" }
            timeout           { fail "(timeout) v_int+=v_signed_long" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_long" }
    timeout           { fail "(timeout) v_int+=v_signed_long" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"


send_gdb "print v_int+=v_unsigned_long\n"
gdb_expect {
    -re ".*17.*$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*17.*$gdb_prompt $" {
                pass "v_int+=unsigned_long"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_long" }
            timeout           { fail "(timeout) v_int+=v_unsigned_long" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_long" }
    timeout           { fail "(timeout) v_int+=v_unsigned_long" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"


send_gdb "print v_int+=v_float\n"
gdb_expect {
    -re ".*106\r\n$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*106\r\n$gdb_prompt $" {
                pass "v_int+=v_float"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_float" }
            timeout           { fail "(timeout) v_int+=v_float" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_float" }
    timeout           { fail "(timeout) v_int+=v_float" }    
  }


gdb_test "set variable v_int = 6" "" "set v_int to 6"


send_gdb "print v_int+=v_double\n"
gdb_expect {
    -re ".*206\r\n$gdb_prompt $" {
        send_gdb "print v_int\n"
        gdb_expect {
            -re ".*206\r\n$gdb_prompt $" {
                pass "v_int+=double"
              }
            -re ".*$gdb_prompt $" { fail "v_int+=v_double" }
            timeout           { fail "(timeout) v_int+=v_double" }    
         }
         }
    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_long" }
    timeout           { fail "(timeout) v_int+=v_double" }    
  }


