>># 
>># 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: dstrysbws.m,v 1.9 92/06/11 16:07:37 rws Exp $
>># 
>>#      SCCS:  @(#)  EWin.mc Rel 1.4	    (7/19/91)
>>#
>>TITLE XDestroySubwindows CH03
>>ASSERTION A XDestroySubwindows-1
A call to XDestroySubwindows destroys all inferior windows
of the specified window, in bottom-to-top stacking order.
>>STRATEGY
Create stack of windows.
Call XDestroySubwindows on window.
Verify that this window still exists.
Verify that all inferiors no longer exist.
Verify by pixel checking that all traces of the windows have been removed from
the parent.
>>ASSERTION A XDestroySubwindows-2
When a call to XDestroySubwindows destroys a subwindow and
the subwindow is mapped, then the subwindow is unmapped
first and an UnmapNotify event is generated.
>>STRATEGY
Create stack of windows.
Unmap one window.
Enable events on each window.
Call XDestroySubwindows on window.
Verify that an UnmapNotify event is generated for each mapped subwindow.
Verify that an UnmapNotify event is generated on the parent of each mapped
subwindow.
Verify that no UnmapNotify event is generated for the unmapped window.
Verify all fields of events.
>>ASSERTION A XDestroySubwindows-3
On a call to XDestroySubwindows a DestroyNotify event is
generated for each window that is destroyed with events
being generated for all inferiors of that window before
being generated for the given window.
>>STRATEGY
Create stack of windows.
Enable events on each window.
Call XDestroySubwindows on window.
Verify that a DestroyNotify event is generated for each subwindow.
Verify that a DestroyNotify event is generated on the parent of each subwindow.
>>ASSERTION A XDestroySubwindows-4
When a call to XDestroySubwindows 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 stack of windows.
Set up window with setforexpose().
Enable events on parent window.
Call XDestroySubwindows on window.
Verify that window was restored from backing store, or that expose events were
generated, using exposecheck().
>>ASSERTION A XDestroySubwindows-5
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.
