>># 
>># 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: dfncrsr.m,v 1.13 92/06/11 16:22:22 rws Exp $
>># 
>>#      SCCS:  @(#)  ECur.mc Rel 1.8	    (2/21/92)
>>#      SCCS:  @(#)  EWin.mc Rel 1.4	    (7/19/91)
>>#
>>TITLE XDefineCursor CH06
>>ASSERTION B XDefineCursor-1
A call to XDefineCursor sets the cursor for the window to
be cursor.
>>STRATEGY
If extended testing is required:
  Create a window.
  Obtain a non-default cursor.
  Set the window cursor using XDefineCursor.
  Verify that the window cursor is set correctly.
Otherwise:
  Create cursor.
  Create windows.
  Call XDefineCursor.
>>ASSERTION B XDefineCursor-2
When the cursor is None and the window is the root window,
then the default cursor will be used.
>>STRATEGY
If extended testing is required:
  If the server supports two screens with the same default cursor:
    Set the root window cursor to a non-default cursor using XDefineCursor.
    Verify that the cursor was set correctly.
    Warp the pointer into the root window.
    Verify that the current cursor is that of the root window.
    Warp the pointer to the alternate root window.
    Verify that the current cursor is not the same as that of the default root window.
    Reset the cursor of the root window to the default cursor using XDefineCursor.
    Verify that the current cursor is the same as that of the default root window.
  Otherwise :
    Set the root window cursor to a non-default cursor using XDefineCursor.
    Verify that the cursor was set correctly.
    Warp the pointer to the root window.
    Verify that the current cursor is that of the root window.
    Reset the cursor of the root window to the default cursor using XDefineCursor.
    Verify that the root window cursor is no longer the non-default cursor.
Otherwise:
  Set window to root window.
  Call XDefineCursor with cursor set to None.
>>ASSERTION B XDefineCursor-3
When the cursor is None and the window is not the root
window, then the parent's cursor will be used.
>>STRATEGY
If extended testing is required:
  Create a window.
  Set the cursor of that window to a non-default cursor.
  Verify that the parent window's cursor is correctly set.
  Warp the pointer into the parent.
  Verify that the current cursor is that of the parent.
  Create a child of the window.
  Set the cursor of the child to a different cursor.
  Verify that the child window's cursor is correctly set.
  Warp the pointer into the child.
  Verify that the current cursor is not that of the parent.
  Verify that the current cursor is that of the child.
  Set the child's cursor to None using XDefineCursor.
  Verify that the current cursor is that of the parent window.
Otherwise:
  Create windows.
  Call XDefineCursor with cursor set to None.
>>ASSERTION B XDefineCursor-4
When the cursor is other than None, then a call to
XDefineCursor sets the cursor for the window to be cursor
and causes the cursor to be displayed when the pointer is in
the window.
>>STRATEGY
If extended testing is required:
  Create a window.
  Set the window cursor to a non-default cursor.
  Verify that the window cursor is set correctly.
  Warp the pointer into the window.    
  Verify that the current cursor is that of the window.
Otherwise:
  Create cursor.
  Create windows.
  Call XDefineCursor with cursor other than None.
>>ASSERTION A XDefineCursor-5
When a cursor argument does not name a valid Cursor, then a
BadCursor error occurs.
>>STRATEGY
Create cursor with shape XT_FONTCURSOR_GOOD in font cursor.
Free cursor.
Call test function using bad cursor as the cursor argument.
Verify that a BadCursor error occurs.
>>ASSERTION A XDefineCursor-6
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.
