# Copyright 1998, 1999 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 arithmetic, logical and relational operators
# with mixed types
# 



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 nowarnings}] != "" } {
    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
    }

if [get_compiler_info ${binfile}] {
    return -1
}

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+v_char\n"
gdb_expect {
    -re ".*71.*$gdb_prompt $" {
        pass "print value of v_int+v_char"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int+v_char" }
    timeout           { fail "(timeout) print value of v_int+v_char" }    
  }

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


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


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


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


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


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


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


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


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


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


send_gdb "print v_int+v_float\n"
gdb_expect {
    -re ".*106.34343.*$gdb_prompt $" {
        pass "print value of v_int+v_float"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int+v_float" }
    timeout           { fail "(timeout) print value of v_int+v_float" }    
  }


send_gdb "print v_int+v_double\n"
gdb_expect {
    -re ".*206.565.*$gdb_prompt $" {
        pass "print value of v_int+v_double"
    }
    -re ".*$gdb_prompt $" { fail "print value of v_int+v_double" }
    timeout     { fail "(timeout) print value of v_int+v_double" }
}


#
# test the relational operators with mixed types
#

send_gdb "print v_int <= v_char\n"
gdb_expect {
    -re ".*1.*$gdb_prompt $" {
        pass "print value of v_int<=v_char"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_char" }
    timeout           { fail "(timeout) print value of v_int<=v_char" }    
  }

send_gdb "print v_int <= v_short\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of v_int<=v_short"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_short" }
    timeout           { fail "(timeout) print value of v_int<=v_short" }    
  }


send_gdb "print v_int <= v_signed_char\n"
gdb_expect {
    -re ".*1.*$gdb_prompt $" {
        pass "print value of v_int<=v_signed_char"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_signed_char" }
    timeout           { fail "(timeout) print value of v_int<=v_signed_char" }    
  }


send_gdb "print v_int <= v_unsigned_char\n"
gdb_expect {
    -re ".*1.*$gdb_prompt $" {
        pass "print value of v_int<=v_unsigned_char"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_unsigned_char" }
    timeout           { fail "(timeout) print value of v_int<=v_unsigned_char" }    
  }


send_gdb "print v_int <= v_signed_short\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of v_int<=v_signed_short"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_signed_short" }
    timeout           { fail "(timeout) print value of v_int<=v_signed_short" }    
  }


send_gdb "print v_int <= v_unsigned_short\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of v_int<=v_unsigned_short"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_unsigned_short" }
    timeout           { fail "(timeout) print value of v_int<=v_unsigned_short" }    
  }


send_gdb "print v_int <= v_signed_int\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int<=v_signed_int"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_signed_int" }
    timeout           { fail "(timeout) print value of v_int<=v_signed_int" }    
  }


send_gdb "print v_int <= v_unsigned_int\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int<=v_unsigned_int"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_unsigned_int" }
    timeout           { fail "(timeout) print value of v_int<=v_unsigned_int" }    
  }


send_gdb "print v_int <= v_long\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int<=v_long"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_long" }
    timeout           { fail "(timeout) print value of v_int<=v_long" }    
  }


send_gdb "print v_int <= v_signed_long\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int<=v_signed_long"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_signed_long" }
    timeout           { fail "(timeout) print value of v_int<=v_signed_long" }    
  }


send_gdb "print v_int <= v_unsigned_long\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int<=v_unsigned_long"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_unsigned_long" }
    timeout           { fail "(timeout) print value of v_int<=v_unsigned_long" }    
  }


send_gdb "print v_int <= v_float\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int<=v_float"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_float" }
    timeout           { fail "(timeout) print value of v_int<=v_float" }    
  }


send_gdb "print v_int <= v_double\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int<=v_double"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int<=v_double" }
    timeout           { fail "(timeout) print value of v_int<=v_double" }    
  }



#
# test the logical operators with mixed types
#

gdb_test "set variable v_char=0" "" "set v_char=0"
gdb_test "set variable v_double=0.0" "" "set v_double=0"
gdb_test "set variable v_unsigned_long=0" "" "set v_unsigned_long=0"

send_gdb "print v_int && v_char\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of v_int&&v_char"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_char" }
    timeout           { fail "(timeout) print value of v_int&&v_char" }    
  }

send_gdb "print v_int && v_short\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_short"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_short" }
    timeout           { fail "(timeout) print value of v_int&&v_short" }    
  }


send_gdb "print v_int && v_signed_char\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_signed_char"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_signed_char" }
    timeout           { fail "(timeout) print value of v_int&&v_signed_char" }    
  }


send_gdb "print v_int && v_unsigned_char\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_unsigned_char"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_unsigned_char" }
    timeout           { fail "(timeout) print value of v_int&&v_unsigned_char" }    
  }


send_gdb "print v_int && v_signed_short\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_signed_short"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_signed_short" }
    timeout           { fail "(timeout) print value of v_int&&v_signed_short" }    
  }


send_gdb "print v_int && v_unsigned_short\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_unsigned_short"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_unsigned_short" }
    timeout           { fail "(timeout) print value of v_int&&v_unsigned_short" }    
  }


send_gdb "print v_int && v_signed_int\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_signed_int"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_signed_int" }
    timeout           { fail "(timeout) print value of v_int&&v_signed_int" }    
  }


send_gdb "print v_int && v_unsigned_int\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_unsigned_int"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_unsigned_int" }
    timeout           { fail "(timeout) print value of v_int&&v_unsigned_int" }    
  }


send_gdb "print v_int && v_long\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_long"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_long" }
    timeout           { fail "(timeout) print value of v_int&&v_long" }    
  }


send_gdb "print v_int && v_signed_long\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_signed_long"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_signed_long" }
    timeout           { fail "(timeout) print value of v_int&&v_signed_long" }    
  }


send_gdb "print v_int && v_unsigned_long\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of v_int&&v_unsigned_long"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_unsigned_long" }
    timeout           { fail "(timeout) print value of v_int&&v_unsigned_long" }    
  }


send_gdb "print v_int && v_float\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of v_int&&v_float"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_float" }
    timeout           { fail "(timeout) print value of v_int&&v_float" }    
  }


send_gdb "print v_int && v_double\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of v_int&&v_double"
      }
    -re ".*$gdb_prompt $" { fail "print value of v_int&&v_double" }
    timeout           { fail "(timeout) print value of v_int&&v_double" }    
  }





