>># 
>># 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: wmgmtry.m,v 1.5 92/06/11 17:32:31 rws Exp $
>># 
>># 
>>#
>>TITLE XWMGeometry CH09
>>ASSERTION A XWMGeometry-1
A call to XWMGeometry combines the geometry information
given in the user_geom, def_geom and hints arguments and
returns in x_return the x offset, in y_return the y offset,
in width_return the width ( = hints->base_width+
width*hints->width_inc), in height_return the height ( =
hints->base_height+ height*hints->height_inc) and in
gravity_return the gravity information specified by the
geometry arguments.
>>STRATEGY
Call XWMGeometry with user_geom "10x12+30+40", def_geom = NULL,
    and an XSizeHints structure with min_width = 38, min_heght = 29,
    max_width = 400, max_height = 300, width_inc = 17, height_inc =18,
    base_width = 20 and base_height = 10.
Verify that the returned width is base_width  + (10 * width_inc)
Verify that the returned height is base_height + (12 * height_inc)
Verify that the returned x-coordinate is 30.
Verify that the returned y-coordinate is 40.

Call XWMGeometry with user_geom NULL, def_geom = "10x12+30+40"
    and an XSizeHints structure with min_width = 38, min_heght = 29,
    max_width = 400, max_height = 300, width_inc = 17, height_inc =18,
    base_width = 20 and base_height = 10.
Verify that the returned width is base_width  + (10 * width_inc)
Verify that the returned height is base_height + (12 * height_inc)
Verify that the returned x-coordinate is 30.
Verify that the returned y-coordinate is 40.

Call XWMGeometry with user_geom = "10x12", def_geom = "2x3+30+40"
    and an XSizeHints structure with min_width = 38, min_heght = 29,
    max_width = 400, max_height = 300, width_inc = 17, height_inc =18,
    base_width = 20 and base_height = 10.
Verify that the returned width is base_width  + (10 * width_inc)
Verify that the returned height is base_height + (12 * height_inc)
Verify that the returned x-coordinate is 30.
Verify that the returned y-coordinate is 40.

Call XWMGeometry with user_geom = "1x1", def_geom = NULL
    and an XSizeHints structure with min_width = 38, min_heght = 29,
    max_width = 400, max_height = 300, width_inc = 17, height_inc =18,
    base_width = 20 and base_height = 10.
Verify that the returned width is min_width
Verify that the returned height is min_height 

Call XWMGeometry with user_geom = "40x30", def_geom = NULL
    and an XSizeHints structure with min_width = 38, min_heght = 29,
    max_width = 400, max_height = 300, width_inc = 17, height_inc =18,
    base_width = 20 and base_height = 10.
Verify that the returned width is max_width
Verify that the returned height is max_height 

Call XWMGeometry with user_geom = "10x12-1-2", def_geom = NULL
    and an XSizeHints structure with min_width = 38, min_heght = 29,
    max_width = 400, max_height = 300, width_inc = 17, height_inc =18,
    base_width = 20 and base_height = 10.
Verify that the returned x-coordinate is DisplayWidth -1 - (base_width + 10 * width_inc) - 2 * bwidth
Verify that the returned y-coordinate is DisplayHeight -1 - (base_height + 10 * height_inc) - 2 * bwidth

>>ASSERTION A XWMGeometry-2
The value returned in the gravity_return information is one
of NorthWestGravity, NorthGravity, NorthEastGravity,
WestGravity, CenterGravity, EastGravity, SouthWestGravity,
SouthGravity, or SouthEastGravity.
>>STRATEGY
Call XWMGeometry with user_geom = "10x20-0-0", and an XSizeHints
  structure with gravity component set to SouthWestGravity.
Verify that the gravity returned is one of NorthWestGravity,
  NorthGravity , NorthEastGravity , WestGravity ,
  CenterGravity ,EastGravity , SouthWestGravity ,
  SouthGravity , SouthEastGravity .
>>ASSERTION A XWMGeometry-3
A call to XWMGeometry returns a mask which indicates which
information came from the user_geom argument and whether the
position is relative to the right and bottom edges which is
the OR of none or any of XValue, YValue, WidthValue,
HeightValue, XNegative, or YNegative.
>>STRATEGY
Call XWMGeometry with user_geom = "40x30-9-9"
Verify that the returned mask is (XValue | YValue | WidthValue |HeightValue | XNegative | YNegative)
Call XWMGeometry with user_geom = "-9+9"
Verify that the returned mask is (XValue | YValue | XNegative)
Call XWMGeometry with user_geom = "5x5"
Verify that the returned mask is (WidthValue | HeightValue)
Call XWMGeometry with user_geom = NULL
Verify that the returned mask is 0.
>>ASSERTION A XWMGeometry-4
When the base_width component of the XSizeHints structure
named by the hints argument is not set, then the min_width
component is used.
>>STRATEGY
Call XWMGeometry with user_geom = "10x12", def_geom = NULL and an XSizeHints
  structure with flags component = PAllHints , base_width = -1 base_height = -2,
  min_width = 20 and min_height = 30.
Verify that the returned width is min_width  + (10 * width_inc)
>>ASSERTION A XWMGeometry-5
When the base_height component of the XSizeHints structure
named by the hints argument is not set, then the min_height
component is used.
>>STRATEGY
Call XWMGeometry with user_geom = "10x12", def_geom = NULL and an XSizeHints
  structure with flags component = PAllHints , base_width = -1 base_height = -2,
  min_width = 20 and min_height = 30.
Verify that the returned height is min_height  + (10 * height_inc)
>>ASSERTION A XWMGeometry-6
When the min_width component is not set in the XSizeHints
structure named by the hints argument, then the base_width
component is used.
>>STRATEGY
Call XWMGeometry with user_geom = "1x1", def_geom = NULL and an XSizeHints
  structure with flags component = PBaseSize | PResizeInc , min_width = 21,
  min_height = 31, width_inc = -1, height_inc = -1, base_height = 20 and
  base_width = 30.
Verify that the returned width is base_width.
>>ASSERTION A XWMGeometry-7
When the min_height component is not set in the XSizeHints
structure named by the hints argument, then the base_height
component is used.
>>STRATEGY
Call XWMGeometry with user_geom = "1x1", def_geom = NULL and an XSizeHints
  structure with flags component = PBaseSize | PResizeInc , min_width = 21,
  min_height = 31, width_inc = -1, height_inc = -1, base_height = 20 and
  base_width = 30.
Verify that the returned height is base_height.
>>ASSERTION A XWMGeometry-8
When neither the base_width nor min_width components of the
XSizeHints structure named by the hints argument is set,
then the value 0 is used.
>>STRATEGY
Call XWMGeometry with user_geom = "1x1", def_geom = NULL and an XSizeHints
  structure with flags component = PResizeInc , min_width = 21,
  min_height = 31, width_inc = -1, height_inc = -1, base_height = 20 and
  base_width = 30.
Verify that the returned width is 0.
>>ASSERTION A XWMGeometry-9
When neither the base_height nor min_height components of
the XSizeHints structure named by the hints argument is set,
then the value 0 is used.
>>STRATEGY
Call XWMGeometry with user_geom = "1x1", def_geom = NULL and an XSizeHints
  structure with flags component = PResizeInc , min_width = 21,
  min_height = 31, width_inc = -1, height_inc = -1, base_height = 20 and
  base_width = 30.
Verify that the returned height is 0.
