>># 
>># 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: stslctnown.m,v 1.8 92/06/11 16:14:05 rws Exp $
>># 
>>#      SCCS:  @(#)  EAto.mc Rel 1.6	    (10/4/91)
>>#      SCCS:  @(#)  EWin.mc Rel 1.4	    (7/19/91)
>>#
>>TITLE XSetSelectionOwner CH04
>>ASSERTION A XSetSelectionOwner-1
A call to XSetSelectionOwner changes the owner window to
owner and the last-change time to time for the specified
selection.
>>STRATEGY
Create a new client.
Obtain current server time.
Call XSetSelectionOwner to assign the owner and time for the selection.
Call XSetSelectionOwner to clear the selection.
Verify that the correct SelectionClear event occurred.
>>ASSERTION A XSetSelectionOwner-2
When the specified time is earlier than the current
last-change time of the specified selection or is later than
the current server time, then a call to XSetSelectionOwner
has no effect.
>>STRATEGY
Create two new clients.
Obtain current server time.
Call XSetSelectionOwner to assign the owner and time for the selection.
Call XSetSelectionOwner to assign the selection to a new client and owner
	with time before last change time.
Verify that no SelectionClear event occurred.
Call XSetSelectionOwner to assign the selection to a new client and owner
	with time after current server time.
Verify that no SelectionClear event occurred.
>>ASSERTION A XSetSelectionOwner-3
When time is CurrentTime, then a call to
XSetSelectionOwner sets the last-change time of the
specified selection to the current server time.
>>STRATEGY
Create a new client.
Obtain current server time.
Call XSetSelectionOwner to assign the owner and time for the selection.
Call XSetSelectionOwner to clear the selection, to obtain selection time.
Verify that the correct SelectionClear event occurred.
Verify the time returned was within acceptable limits.
>>ASSERTION A XSetSelectionOwner-4
When the owner window is None, then a call to
XSetSelectionOwner sets the specified selection to have no
owner.
>>STRATEGY
Call XSetSelectionOwner to set the owner for the selection.
Verify that the selection was set.
Call XSetSelectionOwner to set no owner for the selection.
Verify that the selection has no owner.
>>ASSERTION A XSetSelectionOwner-5
When the specified selection has an owner, and the
specified owner is not the same as the current owner, then
on a call to XSetSelectionOwner the current owner is sent a
SelectionClear event.
>>STRATEGY
Create one new client.
Call XSetSelectionOwner to assign the owner and time for the selection.
Call XSetSelectionOwner to assign the selection to a new owner.
Verify that the correct SelectionClear event occurred.
>>ASSERTION A XSetSelectionOwner-6
When the client that is the owner of a selection is
terminated, or the owner window is destroyed, then the
selection reverts to having no owner, and the last-change
time is unaffected.
>>STRATEGY
Create a new client.
Call XSetSelectionOwner to assign the owner and time for the selection.
Close the connection for client2.
Allow time for the connection to close.
Verify that the ownership of the selection reverted to None.
Assign the selection to another window.
Close the window of the selection.
Verify that the ownership of the selection reverted to None.
>>ASSERTION B XSetSelectionOwner-7
The status of a selection atom is accessible by any client
of the server.
>>STRATEGY
Report UNTESTED
>>ASSERTION A XSetSelectionOwner-8
When an atom argument does not name a valid Atom, then a
BadAtom error occurs.
>>STRATEGY
Call test function using a value with the top bits set as the atom argument.
Verify that a BadAtom error occurs.
>>ASSERTION A XSetSelectionOwner-9
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.
