>># 
>># 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: gtwmnrmlhn.m,v 1.8 92/06/11 17:29:13 rws Exp $
>># 
>>#      SCCS:  @(#)  EWin.mc Rel 1.4	    (7/19/91)
>>#
>>TITLE XGetWMNormalHints CH09
>>ASSERTION A XGetWMNormalHints-1
When the WM_NORMAL_HINTS property has been set on the
window w with a type of WM_SIZE_HINTS, a format of 32 and is
long enough to contain either a pre-ICCCM structure or a new
size hints structure, then a call to XGetWMNormalHints sets
the components of the XSizeHints structure named by the
hints_return argument irrespective of whether the particular
hint was previously set, and returns non-zero.
>>STRATEGY
Create a window with XCreate window.
Set the WM_NORMAL_HINTS property with XSetWMNormalHints.
Obtain the value of the WM_NORMAL_HINTS property using XGetWMNormalhints.
Verify that the entire structure has been returned.
>>ASSERTION A XGetWMNormalHints-2
When the WM_NORMAL_HINTS property is not set on the window
w, or is not of type WM_SIZE_HINTS, or is not of format 32,
or the property is not long enough to contain either a
pre-ICCCM structure or a new size hints structure, then a
call to XGetWMNormalHints returns zero.
>>STRATEGY
Create a window with XCreateWindow.
Obtain the unset WM_NORMAL_HINTS property with XGetWMNormalHints.
Verify that the call returned zero.

Create a window with XCreateWindow.
Set the WM_NORMAL_HINTS property of format 32 type WM_SIZE_HINTS with OldNumPropSizeElements-1 elements XChangeProperty.
Obtain the WM_NORMAL_HINTS property with XGetWMNormalHints.
Verify that the call returned zero.

Create a window with XCreateWindow.
Set the WM_NORMAL_HINTS property of format 16 type WM_SIZE_HINTS with NumPropSizeElements elements with XChangeProperty.
Obtain the WM_NORMAL_HINTS property with XGetWMNormalHints.
Verify that the call returned zero.

Create a window with XCreateWindow.
Set the WM_NORMAL_HINTS property of format 32 type STRING with NumPropSizeElements elements with XChangeProperty.
Obtain the WM_NORMAL_HINTS property with XGetWMNormalHints.
Verify that the call returned zero.
>>ASSERTION A XGetWMNormalHints-3
When a call to XGetWMNormalHints returns successfully and a
pre-ICCCM size hints property is read, then the
supplied_return argument contains the bits (USPosition|
USSize|PPosition|PSize|PMinSize|PMaxSize|
PResizeInc|PAspect).
>>STRATEGY
Create a window with XCreateWindow.
Set the WM_NORMAL_HINTS property with size OldNumPropSizeElements using XChangeProperty.
Obtain the value of the WM_NORMAL_HINTS property using XGetWMNormalHints.
Verify that the value returned in supplied_return was (USPosition|USSize|PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect).
>>ASSERTION A XGetWMNormalHints-4
When the WM_NORMAL_HINTS property is large enough to
contain the base size and window gravity fields, then the
supplied_return argument contains the bits (PBaseSize|
PWinGravity|USPosition|USSize|PPosition|PSize|
PMinSize|PMaxSize|PResizeInc|PAspect).
>>STRATEGY
Create a window with XCreateWindow.
Set the WM_NORMAL_HINTS property with size OldNumPropSizeElements using XChangeProperty.
Obtain the value of the WM_NORMAL_HINTS property using XGetWMNormalHints.
Verify that the value returned in supplied_return was (PBaseSize|PWinGravity|USPosition|USSize|PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect).
>>ASSERTION A XGetWMNormalHints-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.
