>># 
>># Copyright 1990, 1991 by the Massachusetts Institute of Technology and
>># UniSoft Group Limited.
>># 
>># Permission to use, copy, modify, distribute, and sell this software and
>># its documentation for any purpose is hereby granted without fee,
>># provided that the above copyright notice appear in all copies and that
>># both that copyright notice and this permission notice appear in
>># supporting documentation, and that the names of MIT and UniSoft not be
>># used in advertising or publicity pertaining to distribution of the
>># software without specific, written prior permission.  MIT and UniSoft
>># make no representations about the suitability of this software for any
>># purpose.  It is provided "as is" without express or implied warranty.
>># 
>># $XConsortium: dstrywdw.m,v 1.10 92/06/11 16:07:45 rws Exp $
>># 
>>#      SCCS:  @(#)  EWin.mc Rel 1.4	    (7/19/91)
>>#
>>TITLE XDestroyWindow CH03
>>ASSERTION A XDestroyWindow-1
A call to XDestroyWindow destroys the specified window and
all of its subwindows.
>>STRATEGY
Create base window.
Create window with inferiors on base window to destroy.
Call XDestroyWindow on window.
Verify that the window no longer exists.
Verify that all inferiors of the window no longer exist.
Verify by pixel checking that all traces of the windows have been removed from
the base window.
>>ASSERTION A XDestroyWindow-2
When a call to XDestroyWindow destroys a window and the
window is mapped, then the window is unmapped first and an
UnmapNotify event is generated.
>>STRATEGY
Create a base window and a window with inferiors on the base window.
Enable events on each window.
Call XDestroyWindow to destroy a window.
Check that an UnmapNotify event was generated on the destroyed window
	and it's the parent window. 
Verify that the correct windows had notifications
>>ASSERTION A XDestroyWindow-3
On a call to XDestroyWindow a DestroyNotify event is
generated for each window that is destroyed such that for
any given window being destroyed, DestroyNotify is generated
on any inferiors of that window before being generated on
the given window itself.
>>STRATEGY
Create base window.
Create window on base window to destroy.
Create stack of windows on this window.
Enable events on each window.
Call XDestroyWindow on window.
Verify that a DestroyNotify event is generated for each window.
Verify that a DestroyNotify event is generated on the parent of each window.
>>ASSERTION A XDestroyWindow-4
When the specified window is a root window, then no windows
are destroyed.
>>STRATEGY
Create a window.
Attempt to destroy root window.
Verify that the root and our window are still valid.
>>ASSERTION A XDestroyWindow-5
When a call to XDestroyWindow uncovers part of any window
that was formerly obscured, then either Expose events are
generated or the contents are restored from backing store.
>>STRATEGY
Create base window.
Call setforexpose() on base window.
Create window on base to destroy.
Destroy window.
Verify expose processing or backing store with exposecheck().
>>ASSERTION A XDestroyWindow-6
When a window argument does not name a valid Window, then a
BadWindow error occurs.
>>STRATEGY
Create a bad window by creating and destroying a window.
Call test function using bad window as the window argument.
Verify that a BadWindow error occurs.
