2002-05-30 Michael Chastain <mec@shout.net>
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.c++ / misc.exp
index 6090fbb3c2ac0810062ed8f345bdf38c9ff46243..a2d122fc69e3581a60c2b166d8ee5b48d4351877 100644 (file)
@@ -1,4 +1,5 @@
-# Copyright (C) 1992, 1994, 1997 Free Software Foundation, Inc.
+# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2002 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
@@ -23,9 +24,7 @@ if $tracelevel then {
        strace $tracelevel
 }
 
-# Check to see if we have an executable to test.  If not, then either we
-# haven't tried to compile one, or the compilation failed for some reason.
-# In either case, just notify the user and skip the tests in this file.
+if { [skip_cplus_tests] } { continue }
 
 set testfile "misc"
 set srcfile ${testfile}.cc
@@ -43,7 +42,6 @@ proc deduce_language_of_main {} {
 
     # See what language gdb thinks main() is, prior to reading full symbols.
     # I think this fails for COFF targets.
-    setup_xfail "a29k-*-udi"
     send_gdb "show language\n"
     gdb_expect {
        -re ".* source language is \"auto; currently c\[+\]+\".*$gdb_prompt $" {
@@ -79,6 +77,23 @@ proc deduce_language_of_main {} {
     }
 }
 
+proc test_expr { args } {
+    if { [llength $args] % 2 } {
+       warning "an even # of arguments should be passed to test_expr"
+    }
+    set last_ent [expr [llength $args] - 1];
+    set testname [lindex $args $last_ent];
+    if [gdb_test [lindex $args 0] "" "$testname (setup)"] {
+       gdb_suppress_tests;
+    }
+    for {set x 1} {$x < $last_ent} {set x [expr $x + 2]} {
+       if [gdb_test [lindex $args $x] [lindex $args [expr $x + 1]] "$testname ([lindex $args $x])"] {
+           gdb_suppress_tests;
+       }
+    }
+    gdb_stop_suppressing_tests;
+}
+
 proc do_tests {} {
     global prms_id
     global bug_id
@@ -104,3 +119,41 @@ proc do_tests {} {
 }
 
 do_tests
+
+test_expr "set language c++" \
+    "print 1 == 1" "print.*\\$\[0-9\]* = true" \
+    "print 1 == 2" "print.*\\$\[0-9\]* = false" \
+    "print as bool"
+
+# Test bool type printing, etc.
+# Note: Language is already set to C++ above! 
+gdb_test "print v_bool" "\\$\[0-9\]* = false" "print a bool var"
+
+# set a bool variable
+test_expr "set variable v_bool = true" \
+    "print v_bool" "\\$\[0-9\]* = true" \
+    "set a bool var"
+
+# next print an array of bool
+gdb_test "print v_bool_array" "\\$\[0-9\]* = \\{false, false\\}" "print a bool array"
+
+# set elements of a bool array
+test_expr "set variable v_bool_array\[1\] = true" \
+    "print v_bool_array" "\\$\[0-9\]* = \\{false, true\\}" \
+    "set a bool array elem"
+
+# bool constants
+gdb_test "print true" "\\$\[0-9\]* = true" "print true"
+gdb_test "print false" "\\$\[0-9\]* = false" "print false"
+
+# arithmetic conversions
+gdb_test "print 1 + true" "\\$\[0-9\]* = 2" "1 + true"
+gdb_test "print 3 + false" "\\$\[0-9\]* = 3" "3 + false"
+gdb_test "print 1 < 2 < 3" "\\$\[0-9\]* = true" "1 < 2 < 3"
+gdb_test "print 2 < 1 > 4" "\\$\[0-9\]* = false" "2 < 1 > 4"
+gdb_test "print (bool)43" "\\$\[0-9\]* = true" "(bool)43"
+gdb_test "print (bool)0" "\\$\[0-9\]* = false" "(bool)0"
+gdb_test "print (bool)17.93" "\\$\[0-9\]* = true" "(bool)17.93"
+gdb_test "print (bool)0.0" "\\$\[0-9\]* = false" "(bool)0.0"
+gdb_test "print (int)true" "\\$\[0-9\]* = 1" "(int)true"
+gdb_test "print (int)false" "\\$\[0-9\]* = 0" "(int)false"
This page took 0.025759 seconds and 4 git commands to generate.