>># 
>># 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: vsbltyntfy.m,v 1.9 92/06/11 17:26:22 rws Exp $
>># 
>>#
>>TITLE VisibilityNotify CH08
>>ASSERTION A VisibilityNotify-1
The server does not generate VisibilityNotify events on
windows whose class is specified as InputOnly.
>>STRATEGY
Create class InputOnly window.
Select for VisibilityNotify events.
Attempt to generate VisibilityNotify event on this window.
Verify that no events were delivered.
>>ASSERTION A VisibilityNotify-2
When a VisibilityNotify event is generated by a hierarchy
change, then the VisibilityNotify event is delivered after
any hierarchy event.
>>STRATEGY
Create client.
Create window large enough to be partially obscurred by each top-level
window in a "standard" window hierarchy.
Build and create window hierarchy.
Select for VisibilityNotify events on eventw.
Select for MapNotify events on root window.
Generate VisibilityNotify and MapNotify events.
Initialize for expected events.
Harvest events from event queue.
Verify that expected events were delivered.
Verify that all VisibilityNotify events are delivered after all
MapNotify events.
>>ASSERTION A VisibilityNotify-3
When a VisibilityNotify event is generated, then the
VisibilityNotify event is delivered before any Expose events
on that window.
>>STRATEGY
Create window large enough to be partially obscurred by each top-level
window in a "standard" window hierarchy.
Build and create window hierarchy.
Create and map a window.
Select for VisibilityNotify and Expose events on eventw.
Generate VisibilityNotify and MapNotify events.
Initialize for expected events.
Harvest events from event queue.
Ignore Expose events.
Verify that expected events were delivered.
Verify that all VisibilityNotify events are delivered before all
Expose events.
>>ASSERTION A VisibilityNotify-4
When a VisibilityNotify event is generated, then all
clients having set VisibilityChangeMask event mask bits on
the event window are delivered a VisibilityNotify event.
>>STRATEGY
Create clients client2 and client3.
Create window.
Select for VisibilityNotify events using VisibilityChangeMask.
Select for VisibilityNotify events using VisibilityChangeMask with client2.
Select for no events with client3.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that a VisibilityNotify event was delivered to client2.
Verify that event member fields are correctly set.
Verify that no events were delivered to client3.
>>ASSERTION - VisibilityNotify-5
When a VisibilityNotify event is generated, then clients
not having set VisibilityChangeMask event mask bits on the
event window are not delivered a VisibilityNotify event.
>>ASSERTION - VisibilityNotify-6
When a VisibilityNotify event is delivered, then window is
set to the window whose visibility state changes.
>>ASSERTION A VisibilityNotify-7
When a VisibilityNotify event is delivered and window
changes state from partially obscured, fully obscured, or
not viewable to viewable and completely unobscured, then
state is set to VisibilityUnobscured.
>>STRATEGY
Create window.
Select for VisibilityNotify events on window.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that no other events were delivered.
Fully obscure window.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that no other events were delivered.
Partially obscure window.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that no other events were delivered.
>>ASSERTION A VisibilityNotify-8
When a VisibilityNotify event is delivered and window
changes state from viewable and completely unobscured or not
viewable to viewable and partially obscured, then state is
set to VisibilityPartiallyObscured.
>>STRATEGY
Create window.
Create partially obscuring window.
Select for VisibilityNotify events on window.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that no other events were delivered.
Unobscure window.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that no other events were delivered.
>>ASSERTION A VisibilityNotify-9
When a VisibilityNotify event is delivered and window
changes state from viewable and completely unobscured,
viewable and partially obscured, or not viewable to viewable
and fully obscured, then state is set to
VisibilityFullyObscured.
>>STRATEGY
Create window.
Create completely obscuring window.
Create partially obscuring window.
Select for VisibilityNotify events on window.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that no other events were delivered.
Unobscure window.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that no other events were delivered.
Partially obscure window.
Generate VisibilityNotify event.
Verify that a VisibilityNotify event was delivered.
Verify that event member fields are correctly set.
Verify that no other events were delivered.
