Boost logo

Boost :

From: Jeremy Siek (jsiek_at_[hidden])
Date: 2001-12-19 23:58:37


The new Boost.Test library is not currently ready for inclusion in
Boost mainly due to the documentation. However the new Boost.Test is
a good library and vitally needed by the Boost community. It will be
given a "delayed acceptance", which means that it will be checked into
a CVS branch where Gennadiy and others can collaborate on improving
the documentation and resolving the remaining issues. Once that
process is complete, we will have another mini-review, and if that
goes well Boost.Test will be added to the Boost library collection.

Below are my comments on the library, followed by a summary/overview
of other boost members' comments.

My comments:

index.html:
  The descriptions of the components are too vague. The words
  "monitor" and "control" are used, but the reader is left wondering
  what kind of monitoring, and what kind of control. Also, need
  to explain in which situations one would use one component, and
  not another component.

execution_monitor.htm
  Would be good to start with an example to motivate the need for an
  execution monitor, and to show how to use it. Also, the introduction
  does not flow very well. The train of thought jumps around.
  Also it should be longer. Also, the docs should compare the
  execution monitor with the program execution monitor to explain
  what the difference is, and when to use which.

prg_exec_monitor.htm
  Good example.
  Which exceptions are caught by the provided main, and how are
    they reported.
  Should compare and contrast with the test execution monitor, giving
    concrete examples.

test_tools.htm
  Make sure the document the backwards compatibility macros.

  BOOST_CHECK_EQUAL
    What are the requirements on the types of the parameters left and
right?
    I suppose there must be an operator<<(ostream, left_t)
    and operator<<(ostream, right_t) defined. Are there any other
    requirements also missing?

test_exec_monitor.htm
  The docs for this component are quite good.

unit_test_framework.htm

   How does the unit test library handle testing class templates and
      function templates? Typically one want to test with several
      variations on the template paremeters, in a systematic way.
      Would be good to have an example of this.

  Explain the situations when a user would choose function_test_case
  versus the class_test_case.

  Need to separate out what is reference material and what is
  tutorial material. Also, need to make sure there is tutorial
  and/or examples for every macro/function in the framework.
  Also, be careful to only document the public parts of the
  library, or perhaps separate parts of the interface into
  layers. For example, to use the macros, does the casual user
  need to know about the underlying class that gets created?

  Are the BOOST_TEST_CASE, BOOST_PARAM_TEST_CASE, and BOOST_TEST_SUITE
  macro's really necessary? Then only save a little typing.

  I am very concerned with how BOOST_PARAM_TEST_CASE works. When
  trying to use this for the first time, I didn't realize that
  the parameter containers have to be global variables. I made
  them local, and then ran into memory problems. Even if this
  were documented well, I think it still poses a serious usability
  problem, especially when dealing with template classes, where the
  parameters may need to vary. One solution would be to have the
  parameter range *copied* into the test object. Perhaps there
  are better solutions...

  The extension to use bind looks good, that should definitely
  be included.

  Need examples of using the test_suite, unit_test_log, unit_test_result

  Perhaps should break this page up into several pages, each one
  focusing on a single function/class, which more examples and
  explanation of each one.

getting_started.htm
  * perhaps should list the invariants of the class, and discuss
       which tests cover which invariants
  * forgot to test the case when length > strlen(s) for the
       constructor const_string(char const* s, size_t length). What
       should the specified behaviour of the constructor be?
  Would be good to have more full examples for class_test_case and
     for parameterized_class_test_case

   Break up the unit_test_example.cpp into peices showing
      complete individual tests.
   Create an example file for the const_string.

Framework compilation
  Need jamfiles for everything. Should build libraries (.a's).

Miscellaneous Comments:
  - The blue frame with the white border is not so great. It wastes space.
  - The "Benefits" sections tend not to be very informative. Should either
    drop them, or put more into them.

Testing:
  Would be nice to have documentation describing how the Boost.Test
  library was tested, describing which components are tested by which
  tests. The current docs have a few pointers to files, but this needs
  to be organized better, collected in one place, and made sure that
  it is complete.

Collected comments from others:

From Dave
  documentation wording improvements
  was the proposal for the BOOST_THROW macro resolved?

From Fernando, et. all
  the floating point equality checking issue, refactoring of the
  messages and the equality testing functions. Gennadiy has made
  changes to accomodate this, and we will need to look at the
  changes he made.

From Bill:
  - Documentation needs improving.
  - BTW, I strongly disagree with the statement "(though obviously this
      is not crucial to the acceptance or inclusion of this library)".
      Good documentation *is* a *requirement* for boost libraries.
  - timeout implementation portability issues

From Ron:
  documentation improvements
    want clean separation between "reference" and "tutorial"
documentation.
    (Ron was not talking about the separation between user and
implementation
     documentation)
  separate binary library: this needs to be documented more clearly.

From Beman:
  documentation
  jamfiles
  portability
  cleaner separation between "public" versus "detail" parts of the
    library
  details of test outputs

----------------------------------------------------------------------
 Jeremy Siek http://www.osl.iu.edu/~jsiek/
 Ph.D. Student, Indiana Univ. B'ton email: jsiek_at_[hidden]
 C++ Booster (http://www.boost.org) office phone: (812) 855-3608
----------------------------------------------------------------------


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk