This is the main directory for the Boost Test Library.

(Not to be confused with a directory containing test programs for the parent directory.)

Full instructions for use of this library can be accessed from
libs/test/docs/index.html

This library is part of boost (see www.boost.org), the latest version 
of the library is available from the boost web site, or development
snapshots from the boost cvs repository at 
http://sourceforge.net/project/?group_id=7586

************************************************************************

Copyright Gennadiy Rozental 2001-2004. 
Distributed under the Boost Software License, Version 1.0. 
(See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)
