# Copyright 2014-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 is part of the GDB testsuite.
# It tests equal? for the various gsmobs.

load_lib gdb-guile.exp

standard_testfile

if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
    return
}

# Skip all tests if Guile scripting is not enabled.
if { [skip_guile_tests] } { continue }

if ![gdb_guile_runto_main] {
   return
}

gdb_scm_test_silent_cmd "guile (define frame (selected-frame))" "get frame"
gdb_scm_test_silent_cmd "guile (define arch (frame-arch frame))" "get arch"

gdb_test "guile (print (equal? (selected-frame) (newest-frame)))" \
    "= #t" "equal? frame"
gdb_test "guile (print (equal? (selected-frame) (frame-older (newest-frame))))" \
    "= #f" "not equal? frame"

gdb_test "guile (print (equal? (make-value 1) (make-value 1)))" \
    "= #t" "equal? value"
gdb_test "guile (print (equal? (make-value 1) (make-value 2)))" \
    "= #f" "not equal? value"

gdb_test "guile (print (equal? (value-type (make-value 1)) (value-type (make-value 2))))" \
    "= #t" "equal? type"
gdb_test "guile (print (equal? (value-type (make-value 1)) (value-type (make-value 2.5))))" \
    "= #f" "not equal? type"

gdb_test "guile (print (equal? (lookup-global-symbol \"main\") (lookup-global-symbol \"main\")))" \
    "= #t" "equal? symbol"
gdb_test "guile (print (equal? (lookup-global-symbol \"main\") (lookup-global-symbol \"x\")))" \
    "= #f" "not equal? symbol"
