# 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
  }

  #
  # test variable API
  #
  set prms_id 0
  set bug_id 0

  set testfile "c_variable"
  set srcfile ${testfile}.c
  set binfile ${objdir}/${subdir}/${testfile}
  set r [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}]
  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
}
