# Copyright 1998-2021 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 Elena Zannoni (ezannoni@cygnus.com)

# This file is part of the gdb testsuite
#
# tests expressions with bitwise operators, and some
# logical operators
# Does not use a target program
# 


#
# test running programs
#


gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir


gdb_test "print !1" ".\[0-9\]* = 0" "print value of !1"

gdb_test "print !0" ".\[0-9\]* = 1" "print value of !0"

gdb_test "print !100" ".\[0-9\]* = 0" "print value of !100"

gdb_test "print !1000" ".\[0-9\]* = 0" "print value of !1000"

gdb_test "print !10" ".\[0-9\]* = 0" "print value of !10"

gdb_test "print !2" ".\[0-9\]* = 0" "print value of !2 "

gdb_test "print 10 | 5" ".\[0-9\]* = 15" "print value of 10 | 5"

gdb_test "print 10 & 5" ".\[0-9\]* = 0" "print value of 10 & 5"

gdb_test "print 10 ^ 5" ".\[0-9\]* = 15" "print value of 10 ^ 5"

gdb_test "print -!0" ".\[0-9\]* = -1" "print value of -!0"

gdb_test "print ~-!0" ".\[0-9\]* = 0" "print value of ~-!0"

gdb_test "print 3 * 2 / 4.0 * 2.0" ".\[0-9\]* = 3" \
    "print value of 3 * 2 / 4.0 * 2.0"

gdb_test "print 8 << 2 >> 4" ".\[0-9\]* = 2" \
    "print value of 8 << 2 >> 4"

gdb_test "print -1 < 0 > 1" ".\[0-9\]* = 0" \
    "print value of -1 < 0 > 1"

gdb_test "print 15 ^ 10 ^ 5 ^ 7" ".\[0-9\]* = 7" \
    "print value of 15 ^ 10 ^ 5 ^ 7"

gdb_test "print 3.5 < 4.0" ".\[0-9\]* = 1" \
    "print value of 3.5 < 4.0"

gdb_test "print 3.5 < -4.0" ".\[0-9\]* = 0" \
    "print value of 3.5 < -4.0"

gdb_test "print 2 > -3" ".\[0-9\]* = 1" "print value of 2 > -3"

gdb_test "print -3>4" ".\[0-9\]* = 0" "print value of -3>4"

gdb_test "print (-3 > 4)" ".\[0-9\]* = 0" "print value of (-3 > 4)"

gdb_test "print 3>=2.5" ".\[0-9\]* = 1" "print value of 3>=2.5"

gdb_test "print 3>=4.5" ".\[0-9\]* = 0" "print value of 3>=4.5"

gdb_test "print 3==3.0" ".\[0-9\]* = 1" "print value of 3==3.0"

gdb_test "print 3==4.0" ".\[0-9\]* = 0" "print value of 3==4.0"

gdb_test "print 3!=3.0" ".\[0-9\]* = 0" "print value of 3!=3.0"

gdb_test "print 3!=5.0" ".\[0-9\]* = 1" "print value of 3!=5.0"

gdb_test "print 0 || 1 && 0 | 0 ^ 0 == 8 > 128 >>1 +2 *2" \
    ".\[0-9\]* = 0" \
    "print value of 0 || 1 && 0 | 0 ^ 0 == 8 > 128 >>1 +2 *2"

gdb_test "print 1.0 || 0" ".\[0-9\]* = 1" \
    "print value of 1.0 || 0"

gdb_test "print 0.0 || 1.0" ".\[0-9\]* = 1" \
    "print value of 0.0 || 1.0"

gdb_test "print 0.0 || 0" ".\[0-9\]* = 0" \
    "print value of 0.0 || 0"

gdb_test "print 0 || 1 && 0 | 0 ^ 0 == 8" ".\[0-9\]* = 0" \
    "print value of 0 || 1 && 0 | 0 ^ 0 == 8"

gdb_test "print 0 == 8 > 128 >> 1 + 2 * 2" ".\[0-9\]* = 0" \
    "print value of 0 == 8 > 128 >> 1 + 2 * 2"

