1201062Sluigi# Copyright 1998, 1999, 2007, 2008, 2009, 2010, 2011 2201062Sluigi# Free Software Foundation, Inc. 3201062Sluigi 4201062Sluigi# This program is free software; you can redistribute it and/or modify 5201062Sluigi# it under the terms of the GNU General Public License as published by 6201062Sluigi# the Free Software Foundation; either version 3 of the License, or 7201062Sluigi# (at your option) any later version. 8201062Sluigi# 9201062Sluigi# This program is distributed in the hope that it will be useful, 10201062Sluigi# but WITHOUT ANY WARRANTY; without even the implied warranty of 11201062Sluigi# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12201062Sluigi# GNU General Public License for more details. 13201062Sluigi# 14201062Sluigi# You should have received a copy of the GNU General Public License 15201062Sluigi# along with this program. If not, see <http://www.gnu.org/licenses/>. 16201062Sluigi 17201062Sluigi# This file was written by Elena Zannoni (ezannoni@cygnus.com) 18201062Sluigi 19201062Sluigi# This file is part of the gdb testsuite 20201062Sluigi# 21201062Sluigi# tests for correctenss of relational operators, associativity and precedence 22201062Sluigi# with integer type variables 23201062Sluigi# 24201062Sluigi 25201062Sluigiif $tracelevel then { 26201062Sluigi strace $tracelevel 27201062Sluigi } 28201062Sluigi 29201062Sluigi# 30201062Sluigi# test running programs 31201062Sluigi# 32246932Sluigi 33201062Sluigiif { [prepare_for_testing relational.exp relational int-type.c {debug nowarnings}] } { 34201062Sluigi return -1 35201062Sluigi} 36201062Sluigi 37201062Sluigiif [get_compiler_info not-used] { 38201062Sluigi return -1; 39201062Sluigi} 40201062Sluigi 41201062Sluigi# 42201062Sluigi# set it up at a breakpoint so we can play with the variable values 43201062Sluigi# 44201062Sluigi 45201062Sluigiif ![runto_main] then { 46201062Sluigi perror "couldn't run to breakpoint" 47201062Sluigi continue 48201062Sluigi} 49201062Sluigi 50201062Sluigi# 51201062Sluigi# test expressions with "int" types 52201062Sluigi# 53201062Sluigi 54201062Sluigigdb_test_no_output "set variable x=14" "set variable x=14" 55201062Sluigigdb_test_no_output "set variable y=2" "set variable y=2" 56201062Sluigigdb_test_no_output "set variable z=2" "set variable z=2" 57201062Sluigigdb_test_no_output "set variable w=3" "set variable w=3" 58201062Sluigi 59201062Sluigigdb_test "print x" " = 14" "print value of x" 60201062Sluigi 61201062Sluigigdb_test "print y" " = 2" "print value of y" 62201062Sluigi 63201062Sluigigdb_test "print z" " = 2" "print value of z" 64201062Sluigi 65201062Sluigigdb_test "print w" " = 3" "print value of w" 66201062Sluigi 67201062Sluigigdb_test "print x < y" "$false" "print value of x<y" 68201062Sluigi 69201062Sluigigdb_test "print x <= y" "$false" "print value of x<=y" 70201062Sluigi 71201062Sluigigdb_test "print x > y" "$true" "print value of x>y" 72201062Sluigi 73201062Sluigigdb_test "print x >= y" "$true" "print value of x>=y" 74201062Sluigi 75201062Sluigigdb_test "print x == y" "$false" "print value of x==y" 76201062Sluigi 77201062Sluigigdb_test "print x != y" "$true" "print value of x!=y" 78201062Sluigi 79201062Sluigi 80201062Sluigi# Test associativity of <, >, <=, >=, ==, != 81201062Sluigi 82201062Sluigigdb_test_no_output "set variable x=3" "set variable x" 83201062Sluigigdb_test_no_output "set variable y=5" "set variable y" 84201062Sluigigdb_test_no_output "set variable z=2" "set variable z" 85201062Sluigi 86201062Sluigigdb_test "print x < y < z" "$true" "print value of x<y<z" 87201062Sluigi 88201062Sluigigdb_test "print x <= y <= z" "$true" "print value of x<=y<=z" 89201062Sluigi 90201062Sluigigdb_test "print x > y > z" "$false" "print value of x>y>z" 91201062Sluigi 92201062Sluigigdb_test "print x >= y >= z" "$false" "print value of x>=y>=z" 93201062Sluigi 94201062Sluigigdb_test_no_output "set variable x=2" "set variable x" 95201062Sluigigdb_test_no_output "set variable y=2" "set variable y" 96201062Sluigigdb_test_no_output "set variable z=1" "set variable z" 97201062Sluigi 98201062Sluigigdb_test "print x == y == z" "$true" "print value of x==y==z" 99201062Sluigi 100201062Sluigigdb_test_no_output "set variable z=0" "set variable z" 101201062Sluigi 102201062Sluigigdb_test "print x != y != z" "$false" "print value of x!=y!=z" 103201062Sluigi 104201062Sluigi# test precedence rules on pairs of relational operators 105201062Sluigi 106201062Sluigigdb_test_no_output "set variable x=0" "set variable x" 107201062Sluigigdb_test_no_output "set variable y=2" "set variable y" 108201062Sluigigdb_test_no_output "set variable z=2" "set variable z" 109201062Sluigi 110201062Sluigigdb_test "print x < y == z" "$false" "print value of x<y==z" 111201062Sluigi 112201062Sluigi# 0 2 2 113201062Sluigigdb_test "print x < y != z" "$true" "print value of x<y!=z" 114201062Sluigi 115201062Sluigigdb_test_no_output "set variable x=2" "set variable x" 116201062Sluigigdb_test_no_output "set variable y=3" "set variable y" 117201062Sluigigdb_test_no_output "set variable z=1" "set variable z" 118201062Sluigi 119201062Sluigi 120201062Sluigi# 2 3 1 121201062Sluigigdb_test "print x < y <= z" "$true" "print value of x<y<=z" 122201062Sluigi 123201062Sluigi# 2 3 1 124201062Sluigigdb_test "print x < y >= z" "$true" "print value of x<y>=z" 125201062Sluigi 126201062Sluigigdb_test_no_output "set variable z=0" " set variable z" 127201062Sluigi 128201062Sluigi# 2 3 0 129201062Sluigigdb_test "print x < y > z" "$true" "print value of x<y>z" 130201062Sluigi 131201062Sluigigdb_test_no_output "set variable x=1" " set variable x" 132201062Sluigi 133201062Sluigi# 1 3 0 134201062Sluigigdb_test "print x > y >= z" "$true" "print value of x>y>=z" 135201062Sluigi 136210125Sluigigdb_test_no_output "set variable z=2" " set variable z" 137201062Sluigi 138201062Sluigi# 1 3 2 139201062Sluigigdb_test "print x > y == z" "$false" "print value of x>y==z" 140201062Sluigi 141201062Sluigigdb_test_no_output "set variable x=2" " set variable x" 142201062Sluigigdb_test_no_output "set variable z=0" " set variable z" 143201062Sluigi 144201062Sluigi# 2 3 0 145201062Sluigigdb_test "print x > y != z" "$false" "print value of x>y!=z" 146201062Sluigi 147201062Sluigigdb_test_no_output "set variable x=4" "set x to 4" 148201062Sluigi 149201062Sluigi# 4 3 0 150201062Sluigigdb_test "print x > y <= z" "$false" "print value of x>y<=z" 151201062Sluigi 152201062Sluigi# 4 3 0 153201062Sluigigdb_test "print x >= y == z" "$false" "print value of x>=y==z" 154201062Sluigi 155201062Sluigigdb_test_no_output "set variable x=2" " set variable x" 156201062Sluigi 157201062Sluigi# 2 3 0 158201062Sluigigdb_test "print x >= y != z" "$false" "print value of x>=y!=z" 159201062Sluigi 160201062Sluigigdb_test_no_output "set variable x=0" " set variable x" 161201062Sluigigdb_test_no_output "set variable z=4" " set variable z" 162210125Sluigi 163210125Sluigi# 0 3 4 164210125Sluigigdb_test "print x >= y <= z" "$true" "print value of x>=y<=z" 165201062Sluigi 166201062Sluigi# 0 3 4 167201062Sluigigdb_test "print x <= y == z" "$false" "print value of x<=y==z" 168201062Sluigi 169201062Sluigigdb_test_no_output "set variable x=2" " set variable x" 170201062Sluigi 171201062Sluigi# 2 3 4 172201062Sluigigdb_test "print x <= y != z" "$true" "print value of x<=y!=z" 173201062Sluigi 174201062Sluigi# 2 3 4 175201062Sluigigdb_test "print x == y != z" "$true" "print value of x==y!=z" 176201062Sluigi 177201062Sluigi 178201062Sluigi 179201062Sluigi# test use of parenthesis to enforce different order of evaluation 180201062Sluigi 181210125Sluigigdb_test_no_output "set variable z=0" " set variable z" 182201062Sluigi 183210125Sluigi# 2 3 0 184201062Sluigigdb_test "print x >= (y < z)" "$true" "print value of x>=(y<z)" 185201062Sluigi 186201062Sluigi# 2 3 0 187201062Sluigigdb_test "print x >= (y != z)" "$true" "print value of x>=(y!=z)" 188201062Sluigi 189201062Sluigi# 2 3 0 190201062Sluigigdb_test "print x == (y == z)" "$false" "print value of x==(y==z)" 191201062Sluigi 192201062Sluigigdb_test_no_output "set variable x=1" " set variable x" 193201062Sluigigdb_test_no_output "set variable z=4" " set variable z" 194201062Sluigi 195201062Sluigi# 1 3 4 196201062Sluigigdb_test "print (x == y) < z" "$true" "print value of (x==y)<z" 197201062Sluigi 198210125Sluigi