>># 
>># 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: stclsdwnmd.m,v 1.3 92/06/11 17:16:21 rws Exp $
>># 
>>#      SCCS:  @(#)  EVal.mc Rel 1.5	    (10/10/91)
>>#
>>TITLE XSetCloseDownMode CH07
>>ASSERTION A XSetCloseDownMode-1
When close_mode is set to DestroyAll and the client is
subsequently closed down, then all Window, Font, Pixmap,
Colormap, Cursor and GContext resources allocated by the
client are destroyed.
>>STRATEGY
Create a new connection client1.
Create resources for client1.
Call XSetCloseDownMode on client1 with close_mode of DestroyAll.
Close client1.
Verify that the resources are destroyed.
>>ASSERTION A XSetCloseDownMode-2
When close_mode is set to DestroyAll and the client is
subsequently closed down, then all the windows in the
client's save-set that are inferiors of a window created by
the client are reparented, with no change in position
relative to the root window, to the closest ancestor that is
not an inferior of the client's window.
>>STRATEGY
Create new connection client1.
Create window with client1.
Create inferior of window with Dsp.
Add this window to client1's save-set.
Call XSetCloseDownMode on client1 with close_mode of DestroyAll.
Close client1.
Verify that save-set window is reparented with no change in position.
>>ASSERTION A XSetCloseDownMode-3
When close_mode is set to DestroyAll and the client is
subsequently closed down, then all windows in the client's
save set that were not mapped are mapped.
>>STRATEGY
Create new connection client1.
Create window with client1.
Create unmapped inferior of window with Dsp.
Add this window to client1's save-set.
Call XSetCloseDownMode on client1 with close_mode of DestroyAll.
Verify that save-set window is mapped.
>>ASSERTION A XSetCloseDownMode-4
When close_mode is RetainPermanent and the client is
subsequently closed down, then the resources allocated by
the client are not destroyed and are marked as permanent.
>>STRATEGY
Create client1.
Create resource for client1.
Call XSetCloseDownMode for client1 with close_mode of RetainPermanent.
Close client1.
Verify that client1 resource still exists.
Call XKillClient with AllTemporary.
Verify that client1 resource still exists.
>>ASSERTION A XSetCloseDownMode-5
When close_mode is RetainTemporary and the client is
subsequently closed down, then all resources allocated by
the client are not destroyed and are marked as temporary.
>>STRATEGY
Create client1.
Create resource for client1.
Call XSetCloseDownMode for client1 with close_mode of RetainTemporary.
Close client1.
Verify that client1 resource still exists.
Call XKillClient with AllTemporary.
Verify that client1 resource no longer exists.
>>ASSERTION A XSetCloseDownMode-6
When close_mode is RetainPermanent or RetainTemporary and
the client is subsequently closed down, then all windows in
the client's save-set are unaffected.
>>STRATEGY
Create new connection client1.
Create window with client1.
Create unmapped inferior of window with Dsp.
Add this window to client1's save-set.
Call XSetCloseDownMode on client1 with close_mode of RetainPermanent.
Close client1 connection.
Verify that save-set window is not mapped.
>>ASSERTION A XSetCloseDownMode-7
When the value of close_mode is other than DestroyAll,
RetainPermanent or RetainTemporary, then a BadValue error
occurs.
>>STRATEGY
Obtain a sequence of values which are not in the list specified by VALUE_LIST.
For each value:
  Call test function with this value in the VALUE_ARG argument.
  Verify that a BadValue error occurs.
