>># 
>># 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: crcltsbwsd.m,v 1.6 92/06/11 16:06:20 rws Exp $
>># 
>>#      SCCS:  @(#)  EWin.mc Rel 1.4	    (7/19/91)
>>#
>>TITLE XCirculateSubwindowsDown CH03
>>ASSERTION A XCirculateSubwindowsDown-1
When there is a mapped child that occludes another child,
then a call to XCirculateSubwindowsDown lowers the highest
such mapped child to the bottom of the stack.
>>STRATEGY
Create a window hierarchy using buildtree.
Call XCirculateSubwindowsDown upon the parent window.
Verify that the highest occluding mapped child window was lowered.
>>ASSERTION A XCirculateSubwindowsDown-2
When a call to XCirculateSubwindowsDown 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 a window hierarchy using buildtree.
Call setforexpose on window 'one' to allow Expose event checking.
Select Expose events on window 'one'.
Call XCirculateSubwindowsDown in order to expose window 'one' by lowering window 'two'.
Use exposecheck to ensure that the window 'one' was restored correctly.
>>ASSERTION A XCirculateSubwindowsDown-3
When some other client has selected
SubstructureRedirectMask on the window, then a
CirculateRequest event is generated, and no further
processing is performed.
>>STRATEGY
Create client1 and client2 with a window on client1
Create a window hierarchy for client1.
Save parent window image as reference image.
Select all events other than SubstructureRedirectMask events on
	all the windows for client1, to catch rogue events.
Select SubstructureRedirectMask on the parent window for client2.
Call XCirculateSubwindowsDown on client1 in order to lower window two.
Verify that no events were delivered to client1 using getevent.
Verify that a correct CirculateRequest event was delievered to client2 using getevent and checkevent.
Verify that no further processing occurred by comparing the window and our reference image.
>>ASSERTION A XCirculateSubwindowsDown-4
When a child is actually restacked, then a CirculateNotify
event is generated.
>>STRATEGY
Create client1, client2, and client3, with a window on client1
Create a window hierarchy using buildtree.
Select StructureNotifyMask events on the window zero on client2.
Select SubstructureNotifyMask events on the parent window on client3.
Call XCirculateSubwindowsDown in order to lower window zero.
Verify that a correct CirculateNotify event was delivered to 
	window two on client2 using getevent and checkevent.
Verify that a correct CirculateNotify event was delivered to the
 	parent window on client3 using getevent and checkevent.
>>ASSERTION A XCirculateSubwindowsDown-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.
