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

  #
  # Basic window tests (basic as in, "do they open")
  #
  set prms_id 0
  set bug_id 0

  set srcfile [file join $srcdir $subdir c_variable.c]
  set binfile [file join $objdir $subdir c_variable]
  set r [gdb_compile $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 windows.test]]
  set results [split $results \n]

  # Analyze results
  gdbtk_done $results
}
