# Copyright 1999, 2001, 2004 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License (GPL) 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.

load_lib ../gdb.gdbtk/insight-support.exp

if {[gdbtk_initialize_display]} {
  if {$tracelevel} {
    strace $tracelevel
  }

  set results {}
  if {[skip_cplus_tests]} {
    # Target doesn't have c++ support
    verbose "No C++ support -- skipping test"
  } else {
    #
    # test variable API
    #
    set prms_id 0
    set bug_id 0

    set testfile "cpp_variable"
    set srcfile ${testfile}.cc
    set binfile ${objdir}/${subdir}/${testfile}
    set r [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}]
    if  { $r != "" } {
      gdb_suppress_entire_file \
	"Testcase compile failed, so some tests in this file will automatically fail."
    }

    # Start with a fresh gdbtk
    gdb_exit
    set results [gdbtk_start [file join $srcdir $subdir ${testfile}.test]]
    set results [split $results \n]
  }

  # Analyze results
  gdbtk_done $results
}
