# 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 correctenss of relational operators, associativity and precedence
# with integer type variables
# 

if $tracelevel then {
	strace $tracelevel
	}

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

set testfile "int-type"
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."
    }

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
}

#
# test expressions with "int" types
#

gdb_test "set variable x=14" "" "set variable x=14"
gdb_test "set variable y=2" "" "set variable y=2"
gdb_test "set variable z=2" "" "set variable z=2"
gdb_test "set variable w=3" "" "set variable w=3"

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


send_gdb "print y\n"
gdb_expect {
    -re ".*2.*$gdb_prompt $" {
        pass "print value of y"
      }
    -re ".*$gdb_prompt $" { fail "print value of y" }
    timeout           { fail "(timeout) print value of y" }    
  }

send_gdb "print z\n"
gdb_expect {
    -re ".*2.*$gdb_prompt $" {
        pass "print value of z"
      }
    -re ".*$gdb_prompt $" { fail "print value of z" }
    timeout           { fail "(timeout) print value of z" }    
  }

send_gdb "print w\n"
gdb_expect {
    -re ".*3.*$gdb_prompt $" {
        pass "print value of w"
      }
    -re ".*$gdb_prompt $" { fail "print value of w" }
    timeout           { fail "(timeout) print value of w" }    
  }



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

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

send_gdb "print x > y\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x>y"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>y" }
    timeout           { fail "(timeout) print value of x>y" }    
  }

send_gdb "print x >= y\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x>=y"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>=y" }
    timeout           { fail "(timeout) print value of x>=y" }    
  }

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

send_gdb "print x != y\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x!=y"
      }
    -re ".*$gdb_prompt $" { fail "print value of x!=y" }
    timeout           { fail "(timeout) print value of x!=y" }    
  }



# Test associativity of <, >, <=, >=, ==, !=

gdb_test "set variable x=3" "" "set variable x"
gdb_test "set variable y=5" ""  "set variable y"
gdb_test "set variable z=2" ""  "set variable z"



send_gdb "print x < y < z\n"
gdb_expect {
    -re ".*$true.*\r\n$gdb_prompt $" {
        pass "print value of x<y<z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x<y<z" }
    timeout           { fail "(timeout) print value of x<y<z" }    
  }

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

send_gdb "print x > y > z\n"
gdb_expect {
    -re ".*$false.*\r\n$gdb_prompt $" {
        pass "print value of x>y>z"
      }
    -re 8".*$gdb_prompt $" { fail "print value of x>y>z" }
    timeout           { fail "(timeout) print value of x>y>z" }    
  }

send_gdb "print x >= y >= z\n"
gdb_expect {
    -re ".*$false.*\r\n$gdb_prompt $" {
        pass "print value of x>=y>=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>=y>=z" }
    timeout           { fail "(timeout) print value of x>=y>=z" }    
  }

gdb_test "set variable x=2" "" "set variable x"
gdb_test "set variable y=2" ""  "set variable y"
gdb_test "set variable z=1" ""  "set variable z"


send_gdb "print x == y == z\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x==y==z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x==y==z" }
    timeout           { fail "(timeout) print value of x==y==z" }    
  }

gdb_test "set variable z=0" ""  "set variable z"


send_gdb "print x != y != z\n"
gdb_expect {
    -re ".*$false\r\n$gdb_prompt $" {
        pass "print value of x!=y!=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x!=y!=z" }
    timeout           { fail "(timeout) print value of x!=y!=z" }    
  }


# test precedence rules on pairs of relational operators

gdb_test "set variable x=0" "" "set variable x"
gdb_test "set variable y=2" ""  "set variable y"
gdb_test "set variable z=2" ""  "set variable z"


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

# 0  2  2
send_gdb "print x < y != z\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x<y!=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x<y!=z" }
    timeout           { fail "(timeout) print value of x<y!=z" }    
  }

gdb_test "set variable x=2" "" "set variable x"
gdb_test "set variable y=3" ""  "set variable y"
gdb_test "set variable z=1" ""  "set variable z"


# 2 3 1
send_gdb "print x < y <= z\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x<y<=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x<y<=z" }
    timeout           { fail "(timeout) print value of x<y<=z" }    
  }


# 2 3 1
send_gdb "print x < y >= z\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x<y>=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x<y>=z" }
    timeout           { fail "(timeout) print value of x<y>=z" }    
  }


gdb_test "set variable z=0" "" " set variable z"


# 2 3 0
send_gdb "print x < y > z\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x<y>z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x<y>z" }
    timeout           { fail "(timeout) print value of x<y>z" }    
  }


gdb_test "set variable x=1" "" " set variable x"

# 1 3 0
send_gdb "print x > y >= z\n"
gdb_expect {
    -re ".*$true.*$gdb_prompt $" {
        pass "print value of x>y>=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>y>=z" }
    timeout           { fail "(timeout) print value of x>y>=z" }    
  }


gdb_test "set variable z=2" "" " set variable z"

# 1 3 2
send_gdb "print x > y == z\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of x>y==z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>y==z" }
    timeout           { fail "(timeout) print value of x>y==z" }    
  }


gdb_test "set variable x=2" "" " set variable x"
gdb_test "set variable z=0" "" " set variable z"

# 2 3 0
send_gdb "print x > y != z\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of x>y!=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>y!=z" }
    timeout           { fail "(timeout) print value of x>y!=z" }    
  }


gdb_test "set variable x=4" "" "set x to 4"

# 4 3 0
send_gdb "print x > y <= z\n"
gdb_expect {
    -re ".*$false.*$gdb_prompt $" {
        pass "print value of x>y<=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>y<=z" }
    timeout           { fail "(timeout) print value of x>y<=z" }    
  }

# 4 3 0
send_gdb "print x >= y == z\n"
gdb_expect {
    -re ".*$false\r\n$gdb_prompt $" {
        pass "print value of x>=y==z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>=y==z" }
    timeout           { fail "(timeout) print value of x>=y==z" }    
  }


gdb_test "set variable x=2" "" " set variable x"

# 2 3 0
send_gdb "print x >= y != z\n"
gdb_expect {
    -re ".*$false\r\n$gdb_prompt $" {
        pass "print value of x>=y!=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>=y!=z" }
    timeout           { fail "(timeout) print value of x>=y!=z" }    
  }


gdb_test "set variable x=0" "" " set variable x"
gdb_test "set variable z=4" "" " set variable z"

# 0 3 4 
send_gdb "print x >= y <= z\n"
gdb_expect {
    -re ".*$true\r\n$gdb_prompt $" {
        pass "print value of x>=y<=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>=y<=z" }
    timeout           { fail "(timeout) print value of x>=y<=z" }    
  }

# 0 3 4
send_gdb "print x <= y == z\n"
gdb_expect {
    -re ".*$false\r\n$gdb_prompt $" {
        pass "print value of x<=y==z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x<=y==z" }
    timeout           { fail "(timeout) print value of x<=y==z" }    
  }

gdb_test "set variable x=2" "" " set variable x"

# 2 3 4
send_gdb "print x <= y != z\n"
gdb_expect {
    -re ".*$true\r\n$gdb_prompt $" {
        pass "print value of x<=y!=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x<=y!=z" }
    timeout           { fail "(timeout) print value of x<=y!=z" }    
  }


# 2 3 4
send_gdb "print x == y != z\n"
gdb_expect {
    -re ".*$true\r\n$gdb_prompt $" {
        pass "print value of x==y!=z"
      }
    -re ".*$gdb_prompt $" { fail "print value of x==y!=z" }
    timeout           { fail "(timeout) print value of x==y!=z" }    
  }

        

# test use of parenthesis to enforce different order of evaluation


gdb_test "set variable z=0" "" " set variable z"

# 2 3 0
send_gdb "print x >= (y < z)\n"
gdb_expect {
    -re ".*$true\r\n$gdb_prompt $" {
        pass "print value of x>=(y<z)"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>=(y<z)" }
    timeout           { fail "(timeout) print value of x>=(y<z)" }    
  }


# 2 3 0
send_gdb "print x >= (y != z)\n"
gdb_expect {
    -re ".*$true\r\n$gdb_prompt $" {
        pass "print value of x>=(y!=z)"
      }
    -re ".*$gdb_prompt $" { fail "print value of x>=(y*!=z)" }
    timeout           { fail "(timeout) print value of x>=(y!=z)" }    
  }

# 2 3 0
send_gdb "print x == (y == z)\n"
gdb_expect {
    -re ".*$false\r\n$gdb_prompt $" {
        pass "print value of x==(y==z)"
      }
    -re ".*$gdb_prompt $" { fail "print value of x==(y==z)" }
    timeout           { fail "(timeout) print value of x==(y==z)" }    
  }


gdb_test "set variable x=1" "" " set variable x"
gdb_test "set variable z=4" "" " set variable z"

# 1 3 4
send_gdb "print (x == y) < z\n"
gdb_expect {
    -re ".*$true\r\n$gdb_prompt $" {
        pass "print value of (x==y)<z"
      }
    -re ".*$gdb_prompt $" { fail "print value of (x==y)<z" }
    timeout           { fail "(timeout) print value of (x==y)<z" }    
  }






