| 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
|---|
| 2 | <HTML> |
|---|
| 3 | <HEAD> |
|---|
| 4 | <TITLE>Boost Test Library: release rotes</TITLE> |
|---|
| 5 | <LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen"> |
|---|
| 6 | <LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print"> |
|---|
| 7 | <META http-equiv="Content-Language" content="en-us"> |
|---|
| 8 | <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
|---|
| 9 | </HEAD> |
|---|
| 10 | <BODY> |
|---|
| 11 | <DIV class="header"> <A href="index.html">Boost.Test</A> > <SPAN class="current_article">Release |
|---|
| 12 | Notes</SPAN> </DIV> |
|---|
| 13 | <DIV class="body"> <IMG src='btl1.gif' width="252" height="43" alt="Boost Test logo"> |
|---|
| 14 | <H1 class="subtitle">Release Notes</H1> |
|---|
| 15 | <P class="page-toc"><A href="#v1_33_0">Boost release 1.33.0</A></P> |
|---|
| 16 | <P class="page-toc"><A href="#v1_32_0">Boost release 1.32.0</A></P> |
|---|
| 17 | <P class="page-toc"><A href="#v1_31_0">Boost release 1.31.0</A> </P> |
|---|
| 18 | <P class="page-toc"><A href="#v1_30_0">Boost release 1.30.0</A><BR> |
|---|
| 19 | <A href="#Migration">Migration guide from Boost Test v1</A> </P> |
|---|
| 20 | <H2><A name="v1_33_0">Boost release 1.33.0</A></H2> |
|---|
| 21 | <P class="first-line-indented"><EM>In this release Most |
|---|
| 22 | of Boost.Test components undergo a major or significant change in both |
|---|
| 23 | design and implementation</EM>. |
|---|
| 24 | I've strived to keep an interface unchanged as much as |
|---|
| 25 | possible. The primary goals for this update were: </P> |
|---|
| 26 | <UL> |
|---|
| 27 | <LI>Make a Unit Test Framework better suited for different 'runners'</LI> |
|---|
| 28 | <LI>Make Unit Test Framework simpler internally by eliminating test cases |
|---|
| 29 | hierarchy</LI> |
|---|
| 30 | <LI>Make test tools more uniform</LI> |
|---|
| 31 | <LI>Make auto Unit Test Framework as usable as possible</LI> |
|---|
| 32 | </UL> |
|---|
| 33 | <P class="first-line-indented">Following are details of what updated/changed specifically in each area of |
|---|
| 34 | Boost.Test:</P> |
|---|
| 35 | <OL type="I"> |
|---|
| 36 | <LI> |
|---|
| 37 | <H3> Execution Monitor</H3> |
|---|
| 38 | </LI> |
|---|
| 39 | </OL> |
|---|
| 40 | <P class="first-line-indented">The execution monitor design changes from inheritance to delegation. If |
|---|
| 41 | previously one needed to inherit from the boost::execution monitor to do a |
|---|
| 42 | monitored run of a function, now one need to employ an instance of the |
|---|
| 43 | boost::execution_monitor</P> |
|---|
| 44 | |
|---|
| 45 | <P class="first-line-indented">In addition following features implemented:</P> |
|---|
| 46 | <UL> |
|---|
| 47 | <LI>Debugger presence detected, in which case catching system errors (SEH) is |
|---|
| 48 | disabled unless explicitly enabled. For now only works for msvc family</LI> |
|---|
| 49 | <LI> Automatic detection of memory leaks introduced. For now only works for |
|---|
| 50 | msvc family. |
|---|
| 51 | Unit Test Framework turns this feature on by default.</LI> |
|---|
| 52 | </UL> |
|---|
| 53 | <OL start="2"> |
|---|
| 54 | <LI type="I"> |
|---|
| 55 | <H3>Unit Test Framework (UTF)</H3> |
|---|
| 56 | </LI> |
|---|
| 57 | </OL> |
|---|
| 58 | <P class="first-line-indented">This component of Boost.Test undergo a most dramatic changes in both |
|---|
| 59 | design and implementation. </P> |
|---|
| 60 | <UL> |
|---|
| 61 | <LI> UTF doesn't employ test cases hierarchy anymore. There is single class |
|---|
| 62 | test_case that model one testing unit and class test_suite that model a |
|---|
| 63 | collection of test units. Previously UTF employed compound test cases (for |
|---|
| 64 | example parameterized test case) which went through it's components (simple |
|---|
| 65 | subtests) during testing run time. Now compound test present itself as test |
|---|
| 66 | case generator which produce a collection if test_case instances during test |
|---|
| 67 | tree construction time. One consequence of this is that user doesn't need to |
|---|
| 68 | keep track of compound test case parameters is it used be. test_case now |
|---|
| 69 | employs a polymorphic callback to a actual test function. As a result of |
|---|
| 70 | this one could supply any zero arity function as an argument of |
|---|
| 71 | BOOST_TEST_CASE. So no extra support needed to be able to create |
|---|
| 72 | boost::function or boost::bind based tests cases. </LI> |
|---|
| 73 | <LI>Introduced generic mechanism to traverse the test tree. Anyone willing |
|---|
| 74 | to do so just need to implement test_tree_visitor interface and employ |
|---|
| 75 | traverse_test_tree. This allows to implement any pre/post processing over |
|---|
| 76 | test tree. </LI> |
|---|
| 77 | <LI>Introduced a notion of framework. The framework is responsible for: |
|---|
| 78 | <UL> |
|---|
| 79 | <LI>initializing and providing access to master test suite</LI> |
|---|
| 80 | <LI>providing access to current test case</LI> |
|---|
| 81 | <LI> running testing from given test tree node (simple or compound). By default it runs from |
|---|
| 82 | root - master test suite. Supports both sequential and random order.</LI> |
|---|
| 83 | <LI>one may register any test observer agent (implements test_observer |
|---|
| 84 | interface) and framework notifies it of all test events</LI> |
|---|
| 85 | <LI>provides access to any test case based to unique test unit id</LI> |
|---|
| 86 | <LI>Using the framework one could implement different test runners. UTF library |
|---|
| 87 | supplies one console runner (unit_test_main.cpp). But it's possible to do |
|---|
| 88 | one winmain based or anything else. For example GUI program that build test |
|---|
| 89 | tree and then run tests by request from any point in test tree.</LI> |
|---|
| 90 | </UL> |
|---|
| 91 | </LI> |
|---|
| 92 | <LI>Unit test log interface changed to single line (used to be begin/end |
|---|
| 93 | macros). Unit test log formatter interface changed. How it much simpler and |
|---|
| 94 | straightforward. Two supplied implementation are separated. </LI> |
|---|
| 95 | <LI> Notion of unit test result that was responsible for result collection |
|---|
| 96 | and reporting eliminated. Instead introduced independent notions: |
|---|
| 97 | results_collector and results_reporter. Results reporting formatter |
|---|
| 98 | interface made public. Also results_reporter now allows to change an output |
|---|
| 99 | stream.</LI> |
|---|
| 100 | <LI> Progress monitor functionality (which used to be activated in log |
|---|
| 101 | level log_progress) now is an independent test observer and implemented by |
|---|
| 102 | class progress_monitor.</LI> |
|---|
| 103 | <LI> Test case template interface changed. Now user doesn't need to |
|---|
| 104 | explicitly register meta class.</LI> |
|---|
| 105 | <LI>In addition couple more features implemented: |
|---|
| 106 | <UL> |
|---|
| 107 | <LI>Added support for test case timing</LI> |
|---|
| 108 | <LI>UTF made __cdecl - safe</LI> |
|---|
| 109 | <LI> Result report include skipped tests</LI> |
|---|
| 110 | <LI> io saver facilities employed to guard against undesirable modification |
|---|
| 111 | in output streams formatting</LI> |
|---|
| 112 | <LI> template test case automatically generate name that includes type name</LI> |
|---|
| 113 | <LI> --detect_memory_leak and --random command line arguments added</LI> |
|---|
| 114 | </UL> |
|---|
| 115 | </LI> |
|---|
| 116 | </UL> |
|---|
| 117 | <OL start="3"> |
|---|
| 118 | <LI type="I"> |
|---|
| 119 | <H3> Test Tools</H3> |
|---|
| 120 | </LI> |
|---|
| 121 | </OL> |
|---|
| 122 | <UL> |
|---|
| 123 | <LI> Test Tools interfaces now provide 3 version for each tool: |
|---|
| 124 | <UL> |
|---|
| 125 | <LI>CHECK- reports an error if assertion failed</LI> |
|---|
| 126 | <LI>WARN - reports a warning if assertion failed</LI> |
|---|
| 127 | <LI>REQUIRE - reports an error if assertion failed and aborts test case execution</LI> |
|---|
| 128 | </UL> |
|---|
| 129 | </LI> |
|---|
| 130 | <LI>Implementation completely reworked. All tools implemented now through single vararg function</LI> |
|---|
| 131 | <LI>In addition following modifications made: |
|---|
| 132 | <UL> |
|---|
| 133 | <LI>CHECK_COLLECTION interface changed: it now expect 4 arguments</LI> |
|---|
| 134 | <LI>BITWISE_EQUAL renamed to CHECK_BITWISE_EQUAL; old name still provided, |
|---|
| 135 | but is deprecated</LI> |
|---|
| 136 | <LI>CHECK_COLLECTION interface changed to use PP_SEQ and as a result |
|---|
| 137 | support arbitrary(actually maximum is fixed but configurable) number of |
|---|
| 138 | predicate arguments</LI> |
|---|
| 139 | <LI>most of templates eliminated speeding up test modules compilation</LI> |
|---|
| 140 | <LI> floating-point precision set to include all significant digits |
|---|
| 141 | (actually the formula may require some rework since it obviously doesn't do |
|---|
| 142 | a good job sometimes)</LI> |
|---|
| 143 | <LI>BOOST_CHECK/WARN/REQUIRE_SMALL test tool added</LI> |
|---|
| 144 | <LI>deprecated test tools names are removed </LI> |
|---|
| 145 | </UL> |
|---|
| 146 | </LI> |
|---|
| 147 | </UL> |
|---|
| 148 | <OL start="4" type="I"> |
|---|
| 149 | <LI type="I"> |
|---|
| 150 | <H3>Auto Unit Test Framework</H3> |
|---|
| 151 | </LI> |
|---|
| 152 | </OL> |
|---|
| 153 | <UL> |
|---|
| 154 | <LI>BOOST_AUTO_UNIT_TEST renamed to BOOST_AUTO_TEST_CASE. Old name still |
|---|
| 155 | provided but deprecated</LI> |
|---|
| 156 | <LI>BOOST_AUTO_TEST_CASE_TEMPLATE provides an ability to write a |
|---|
| 157 | self-registering test case template</LI> |
|---|
| 158 | <LI>BOOST_FIXTURE_TEST_CASE provides an ability to write a self-registering |
|---|
| 159 | test case with fixture</LI> |
|---|
| 160 | <LI>BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES provides an ability to specify a |
|---|
| 161 | number of expected failures in any self-registering test case</LI> |
|---|
| 162 | <LI>BOOST_AUTO_TEST_SUITE and BOOST_AUTO_TEST_SUITE_END provide an ability |
|---|
| 163 | to structure test cases into self-registering test suites</LI> |
|---|
| 164 | </UL> |
|---|
| 165 | <OL start="5" type="I"> |
|---|
| 166 | <LI> |
|---|
| 167 | <H3> Included components</H3> |
|---|
| 168 | </LI> |
|---|
| 169 | </OL> |
|---|
| 170 | <UL> |
|---|
| 171 | <LI>Implementation moved from source files (.cpp) under lib/test/src into |
|---|
| 172 | implementation files (.ipp) under boost/test/impl to eliminate dependency of |
|---|
| 173 | included/minimal components on lib/test/src directory. </LI> |
|---|
| 174 | </UL> |
|---|
| 175 | <H2><A name="v1_32_0">Boost release 1.32.0</A></H2> |
|---|
| 176 | <UL> |
|---|
| 177 | <LI>Licence updated to use common Boost software licence</LI> |
|---|
| 178 | <LI>basic_cstring introduced and used in most places instead of std::string |
|---|
| 179 | and char const*</LI> |
|---|
| 180 | <LI>namespace names shortened; old one still supported till next release</LI> |
|---|
| 181 | <LI>numerous portability workaround for several new supported configurations</LI> |
|---|
| 182 | <LI>class properties facilities reworked to be more powerful</LI> |
|---|
| 183 | <LI>added proper encoding of XML PCDATA</LI> |
|---|
| 184 | <LI>support for wide string comparison implemented</LI> |
|---|
| 185 | </UL> |
|---|
| 186 | <H2><A name="v1_31_0">Boost release 1.31.0</A></H2> |
|---|
| 187 | <UL> |
|---|
| 188 | <LI><A href="components/utf/components/test_case/tc_template.html">Zero arity function template based test case</A> </LI> |
|---|
| 189 | <LI><A href="components/execution_monitor/execution_monitor.html#register_exception_translator">Custom |
|---|
| 190 | exception translators support </A> in execution monitor and <A href="components/utf/index.html">register_exception_translator</A> added for Unit Test Framework </LI> |
|---|
| 191 | <LI><A href="components/utf/components/test_case/abstract_interface.html">Test |
|---|
| 192 | cases dependency support </A></LI> |
|---|
| 193 | <LI><A href="components/utf/components/test_case/auto_register_facility.html">Added |
|---|
| 194 | support for multi-module unit tests in automatic registration facility </A></LI> |
|---|
| 195 | <LI>Floating point comparison algorithm reworked (Is not backward compatible!!!) |
|---|
| 196 | <UL> |
|---|
| 197 | <LI><STRONG>tolerance now expected in percent units</STRONG></LI> |
|---|
| 198 | <LI>eliminated tolerance definition by number of rounding errors</LI> |
|---|
| 199 | <LI>switch to comparison type enumeration instead of boolean value </LI> |
|---|
| 200 | </UL> |
|---|
| 201 | </LI> |
|---|
| 202 | <LI><A href="usage/generic.html#t1">First failed assertion support</A></LI> |
|---|
| 203 | <LI>Major |
|---|
| 204 | documentation structure rework and update<BR> |
|---|
| 205 | I hope you will find handy new navigation system </LI> |
|---|
| 206 | <LI>Switched to new boost license</LI> |
|---|
| 207 | <LI><A href="components/test_tools/custom_predicate_support.html">Added support |
|---|
| 208 | for custom users predicate returning both boolean result code and possibly |
|---|
| 209 | error message </A></LI> |
|---|
| 210 | <LI><A href="components/test_tools/reference/BOOST_CHECK_EXCEPTION.html">BOOST_CHECK_EXCEPTION</A> test |
|---|
| 211 | tool introduced - to perform complex validation of expected exception </LI> |
|---|
| 212 | <LI>BOOST_IGNORE_CHECK test tool introduced - to be used with BOOST_CHECK_EXCEPTION </LI> |
|---|
| 213 | <LI>Straiten return code logic for Unit Test Framework and in case |
|---|
| 214 | of failed initialization in Unit Test Framework </LI> |
|---|
| 215 | <LI>Added position in the collection comparison results error message </LI> |
|---|
| 216 | <LI>Disable SEH if BOOST_DISABLE_WIN32 in effect</LI> |
|---|
| 217 | <LI>Como can't do structured exceptions</LI> |
|---|
| 218 | <LI>Added support for catch_system_error in Test Execution Monitor</LI> |
|---|
| 219 | <LI><A href="components/utf/components/test_log/custom_log_formatter.html">Move |
|---|
| 220 | log formatter in public interface</A></LI> |
|---|
| 221 | <LI>Custom char value log print procedures</LI> |
|---|
| 222 | <LI>Support for logging variable values of types that does not support operator<< </LI> |
|---|
| 223 | <LI>match_pattern updated to show an error mismatch snippet</LI> |
|---|
| 224 | <LI>force UNIX slash for file name </LI> |
|---|
| 225 | <LI>Some annoying MSVC warnings suppressed </LI> |
|---|
| 226 | <LI>test_case_scope_tracker introduced for correct exception unwinding handling </LI> |
|---|
| 227 | <LI>unit_test_result_tracker introduced for correct exception handling </LI> |
|---|
| 228 | <LI>several minor bug and warnings fixes </LI> |
|---|
| 229 | </UL> |
|---|
| 230 | <H2><A name="v1_30_0">Boost release 1.30.0</A></H2> |
|---|
| 231 | <UL> |
|---|
| 232 | <LI>Facility for automatic registration of unit tests is introduced<BR> |
|---|
| 233 | It was requested during original Boost Test review and now it supports |
|---|
| 234 | automatic registration for free function based test cases. Here an example:<BR> |
|---|
| 235 | <PRE class="code">#<SPAN class="reserv-word">include</SPAN> <boost/test/auto_unit_test.hpp> |
|---|
| 236 | |
|---|
| 237 | BOOST_AUTO_UNIT_TEST( test1 ) |
|---|
| 238 | { |
|---|
| 239 | BOOST_CHECK( true ); |
|---|
| 240 | } |
|---|
| 241 | |
|---|
| 242 | BOOST_AUTO_UNIT_TEST( test2 ) |
|---|
| 243 | { |
|---|
| 244 | BOOST_CHECK( true ); |
|---|
| 245 | }</PRE> |
|---|
| 246 | </LI> |
|---|
| 247 | <LI>XML log format is introduced<BR> |
|---|
| 248 | Now user willing to automate errors processing could get a log in XML format. |
|---|
| 249 | Command line switch is introduced that manage log format:<BR> |
|---|
| 250 | --log_format=[XML|HRF] will force XML or human readable format respectively</LI> |
|---|
| 251 | <LI>XML report format is introduced<BR> |
|---|
| 252 | Now user willing to automate results analysis could get a result report |
|---|
| 253 | in XML format. Command line switch is introduced that manage report format:<BR> |
|---|
| 254 | --report_format=[XML|HRF] will force XML or human readable format respectively</LI> |
|---|
| 255 | <LI>BOOST_CHECK_NO_THROW test tool is introduced</LI> |
|---|
| 256 | <LI>BOOST_BITWISE_EQUAL test tool is introduced</LI> |
|---|
| 257 | <LI>libraries file names changed to:<BR> |
|---|
| 258 | boost_prg_exec_monitor<BR> |
|---|
| 259 | boost_test_exec_monitor<BR> |
|---|
| 260 | boost_unit_test_framework</LI> |
|---|
| 261 | <LI>Components examples and test documentation page is introduced<BR> |
|---|
| 262 | Now all test/examples links lead to this page that has summary information |
|---|
| 263 | about all of them, that include expected output, type of test and so |
|---|
| 264 | on</LI> |
|---|
| 265 | <LI>Catch system errors switch introduced<BR> |
|---|
| 266 | This will work among the lines described in <A href="http://lists.boost.org/MailArchives/boost/msg40028.php"> http://lists.boost.org/MailArchives/boost/msg40028.php</A><BR> |
|---|
| 267 | Environment variable name: BOOST_TEST_CATCH_SYSTEM_ERRORS[="no"]<BR> |
|---|
| 268 | Unit Test Framework command line argument: --catch_system_errors[="no"]</LI> |
|---|
| 269 | <LI>Added building dynamic libraries into Jamfile</LI> |
|---|
| 270 | <LI>MS C runtime debug hooks introduced<BR> |
|---|
| 271 | It allows to catch _ASSERT bases assertion for MSVC</LI> |
|---|
| 272 | <LI>SIGABRT catch added</LI> |
|---|
| 273 | <LI>Eliminated NULLs all over the place<BR> |
|---|
| 274 | I switched to use typedef c_string literal instead of char const* and to |
|---|
| 275 | c_string literal() instead of NULL. Different definition of NULL symbol |
|---|
| 276 | causing small problems for some compilers</LI> |
|---|
| 277 | <LI>class wrapstrstream separated in standalone file and renamed to wrap_stringstream<BR> |
|---|
| 278 | For now it will be located in test/detail. Once I prepare doc page for |
|---|
| 279 | it I will present it for adding into utility</LI> |
|---|
| 280 | <LI>unit_test_result_saver introduced to properly managed reset_current_test_set |
|---|
| 281 | calls in case of exceptions</LI> |
|---|
| 282 | <LI>switch back to use scoped_ptr instead of raw test_suite pointer in unit_test_main.cpp</LI> |
|---|
| 283 | <LI>BOOST_CPP_MAIN_CONFIRMATION renamed to BOOST_PRG_MON_CONFIRM and changed |
|---|
| 284 | it's logic a bit<BR> |
|---|
| 285 | It now should have value "no" to turn off pass confirmation</LI> |
|---|
| 286 | <LI>added tests for auto unit test facility and catching assert statements</LI> |
|---|
| 287 | <LI>Jamfile added info examples directory</LI> |
|---|
| 288 | <LI>Added example input for the unit_test_example5</LI> |
|---|
| 289 | <LI>Command line option --output_format is introduced that both log/report |
|---|
| 290 | format simultaneously</LI> |
|---|
| 291 | <LI>Allows to perform bitwise comparisons of the two arguments provided. |
|---|
| 292 | Will report as many errors as many bits mismatch. Mismatch position is |
|---|
| 293 | reported.</LI> |
|---|
| 294 | <LI>Documentation default palette changed to white</LI> |
|---|
| 295 | <LI>Signal handling selection algorithm fixed<BR> |
|---|
| 296 | BOOST_HAS_SIGACTION is used to select sigaction based signal handling alternative. |
|---|
| 297 | It allowed use of signal handling with gcc on win32 platform.</LI> |
|---|
| 298 | <LI>C strings usage in minimized as much as possible</LI> |
|---|
| 299 | <LI>class_properties header modified to use Boost.Preprocessor for friends |
|---|
| 300 | declaration</LI> |
|---|
| 301 | <LI>other minor code/doc changes and bug fixes</LI> |
|---|
| 302 | </UL> |
|---|
| 303 | <H2><A name="Migration">Boost Test migration guide</A></H2> |
|---|
| 304 | <P class="first-line-indented">This version of Boost.Test library substitute |
|---|
| 305 | the original testing library used in a Boost. These are several simple steps |
|---|
| 306 | you need to follow to smoothly migrate to the latest software.</P> |
|---|
| 307 | <P class="first-line-indented">If your code were using the original version |
|---|
| 308 | of cpp_main facility, to migrate you will need to delete the inclusion of |
|---|
| 309 | the <boost/test/cpp_main.cpp>, since this file is not present any more. |
|---|
| 310 | After that you have following choices:</P> |
|---|
| 311 | <UL> |
|---|
| 312 | <LI>Link with Unit Test Framework (exact library name depends on compiler |
|---|
| 313 | you are using, but most probably it will be libboost_prg_exec_monitor.lib). </LI> |
|---|
| 314 | <LI>Include <boost/test/included/prg_exec_monitor.hpp>, in which case |
|---|
| 315 | you need not link with precompiled component but it may incur probably |
|---|
| 316 | some compile time overhead.</LI> |
|---|
| 317 | </UL> |
|---|
| 318 | <P class="first-line-indented">If your code were using the original version |
|---|
| 319 | of test_main and test tools facilitates of Boost.Test library, to migrate |
|---|
| 320 | to use of latest one you have following choices:</P> |
|---|
| 321 | <UL> |
|---|
| 322 | <LI>Without changing of the code that were using Boost.Test facilities link |
|---|
| 323 | with Test Execution Monitor (exact library name depends on compiler you |
|---|
| 324 | are using, but most probably it will be libtest_exec_monitor.lib).</LI> |
|---|
| 325 | <LI>Include <boost/test/included/test_exec_monitor.hpp>, in which case |
|---|
| 326 | you need not link with precompiled component but it may incur probably |
|---|
| 327 | some compile time overhead. Definition of BOOST_INCLUDE_MAIN could be deleted |
|---|
| 328 | either.</LI> |
|---|
| 329 | <LI>Include <boost/test/minimal.hpp>, in which case you need not link |
|---|
| 330 | with precompiled component and it most probably does not incur a compile |
|---|
| 331 | time overhead, but you will be limited to the set of features defined in |
|---|
| 332 | the original test library. Definition of BOOST_INCLUDE_MAIN could be deleted |
|---|
| 333 | either. Would you decide in a future to use any of newer Boost.Test features |
|---|
| 334 | you will be enforced to snitch to one the two chaises above. </LI> |
|---|
| 335 | </UL> |
|---|
| 336 | </DIV> |
|---|
| 337 | <DIV class="footer"> |
|---|
| 338 | <DIV class="footer-body"> |
|---|
| 339 | <P> © <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy |
|---|
| 340 | Rozental</A> 2001-2006. <BR> |
|---|
| 341 | Distributed under the Boost Software License, Version 1.0. |
|---|
| 342 | (See accompanying file <A href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or |
|---|
| 343 | copy at <A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>)</P> |
|---|
| 344 | <P>Revised: |
|---|
| 345 | <!-- #BeginDate format:Sw1 -->8 March, 2006<!-- #EndDate --> |
|---|
| 346 | </P> |
|---|
| 347 | </DIV> |
|---|
| 348 | </DIV> |
|---|
| 349 | </BODY> |
|---|
| 350 | </HTML> |
|---|