>># 
>># 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: gtwmprtcls.m,v 1.6 92/06/11 17:29:21 rws Exp $
>># 
>>#      SCCS:  @(#)  EWin.mc Rel 1.4	    (7/19/91)
>>#
>>TITLE XGetWMProtocols CH09
>>ASSERTION A XGetWMProtocols-1
When the WM_PROTOCOLS property is set on the window w, is
of type ATOM, and is of format 32, then a call to
XGetWMProtocols returns the list of atoms stored in the
property, which can be freed with XFree, in the
protocols_return argument, the number of atoms in the
count_return argument and returns non-zero.
>>STRATEGY
Create a window using XCreateWindow.
Set the WM_PROTOCOLS property using XSetWMProtocols.
Obtain the value of the WM_PROTOCOLS property using XGetWMProtocols.
Verify that the call did not return False.
Verify that the value was correct.
Free the allocated memory using XFree.
>>ASSERTION B XGetWMProtocols-2
When the atom name (lqWM_PROTOCOLS(rq cannot be interned,
then a call to XGetWMProtocols does not set the
protocols_return or count_return arguments and returns zero.
>>STRATEGY
Report UNTESTED
>>ASSERTION A XGetWMProtocols-3
When the WM_PROTOCOLS property is not set on the window w,
or is not of type ATOM, or is not of format 32, then a call
to XGetWMProtocols does not set the protocols_return or
count_return arguments and returns zero.
>>STRATEGY
Create a window with XCreateWindow.
Insure that the name "WM_PROTOCOLS" is interned using XSetWMProtocols.
Obtain the WM_PROTOCOLS atom using XInternAtom.

Create a window with XCreateWindow.
Initialise the protocols_return and count_return arguments.
Obtain the value of the WM_PROTOCOLS property with XGetWMProtocols.
Verify that the call returned False.
Verify that protocols_return and count_return arguments were unchanged.

Create a window with XCreateWindow.
Set the WM_PROTOCOLS property with format 16 and type ATOM using XChangeProperty.
Initialise the protocols_return and count_return arguments.
Obtain the value of the WM_PROTOCOLS property with XGetWMProtocols.
Verify that the call returned False.
Verify that protocols_return and count_return arguments were unchanged.

Create a window with XCreateWindow.
Initialise the protocols_return and count_return arguments.
Set the WM_PROTOCOLS property with format 32 type STRING using XChangeProperty.
Obtain the value of the WM_PROTOCOLS property with XGetWMProtocols.
Verify that the call returned False.
Verify that protocols_return and count_return arguments were unchanged.

>>ASSERTION A XGetWMProtocols-4
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.
