The Attrtest programs are designed to test attributes and other
features of each object.  Most of the test programs have the same
layout:  a list of attribute  check boxes, several combo boxes, and
other fields used to set object attributes appear on the left side
of the window.  The test object is on the right side of the window.
There is also typically one or two more objects of the same type as
the test object that are used to do drag and drop testing or to set
the test object's value.  Some objects, such as tool bar, status
bar, scrolled window, geometry management and the display class,
stray from this layout to some degree, in some cases moving
completely away from it.

Function buttons
-----------------------

Store--this stores the window and all its sub-objects to a .DAT file,
then reloads a copy of the window and adds it to the window manager.
Note that this does not remove the original window.

Duplicate--similar to the Store button, this copies the window and
all its sub-objects and adds the copy to the window manager.  Note
that this does not remove the original window.

Event log--this displays a list of all library events along with a
count of how many times the test object has received each event. 
This is only available for the test object on the original window.

Add/Subtract--this either adds the test object to the window or
subtracts it from the window, depending on the window state (the
button indicates what its action will be).  This is used when testing
attributes that cannot be changed while the test object is on the
screen.  The tester can remove the object, set attributes as desired,
then re-add the object.

Redraw--this redraws the entire window.  Occasionally, a changed 
attribute will not be reflected visually, even though it did actually 
change.  Redrawing the window can provide extra insight into whether 
a problem has to do with changing the attribute or simply
redisplaying the object properly.

A few other features
--------------------

Attribute count--the attribute check list has a count next to each
attribute.  This count reflects the number of times that attribute's
accessor function has been called during the current execution of
the program.  This can help the tester remember if an attribute has
been tested.

Stars--some attribute selectors have one or two stars (*) next to
them.  This is what they mean:

*--an attribute with one star can be changed while the object is on the
screen.

**--an object with two stars can be changed while the object is
on the screen, but the Auto update attribute will affect whether the
attribute's effect is seen.

No stars--an attribute with no stars cannot be changed while the object
is on the screen.  In this case, the object must first be removed
(using the Subtract button), then the attribute can be changed and the
object re-added.

Some test programs will have disabled attribute selectors.  This
means that the attribute, while general to all objects, does not apply
to the test object.


Special test cases
------------------

Display--the display test program does not adhere to the above
specification since it is not a window object.  The display test
program draws a number of "things" using the display primitives.  How
it draws them--what foreground color, what background color, which
font, whether it's clipped, etc.--is controlled by several combo
boxes on the left side of the window.  Once the desired settings have
been made, the "Apply" button must be selected.  What you will see
depends on what settings you made.  This program tests bitmaps,
icons, lines, ellipses, polygons, rectangles, pixels, text, and
various settings for each (filled, thickness, etc.).

Geometry management--the geometry management test program does not
adhere to the above specification as it is not a true window object,
either.  It tests all the constraints in a simple, two window
program.  It does, however, have Store and Duplicate buttons.
