* Key

X = Done
C = Canceled
- = Pending

* Development stuff

X Rename tests from 00x.t to something more meaningful
X Remove DataDumper Sortkeys dependency (more backward compatible)

* Improvements

X Make Paste combinator accept List arguments (via concat).

X Multiple generator-bindings per Property to allow for
  focusing on certain subpaces of the haystack:
    ##[ [ x <- Int ], [ x <- Int(range=>[-1,1]) ]##
  X all bindings must have identical sets of variables
  X test runner runs a full set of trials against each binding

X Better handling of errors caught durring testing
  X Include "Error caught: $@" in output.

X Combinators
  X Size
  X Each -- Impl: List of length 1 w/ multiple generators
  X Apply(f,gs...) -- returns f(@{Each(gs)})
  X Concat(gs) = Apply(map {@$_ $_}, @{Each(gs)})
  X Map(f, gs...)
  X ConcatMap
  X Flatten(gs)

- Test apparatus
  X label & friends
  X output & reporting
  X integrate w/ Test::Harness
  - Seed for repeatable tests
  - Flight recorder -- record everything to file
  - allow and report multiple test failures -- maybe separate pkg?
  - Allow behavior tests to add notes to a trial; include
    the notes in details.

- Docs
  X TestRunner
  X Property
  - Tutorial 
  - Topics
    - When not to use LectroTest
    - Using LectroTest with Test::More and ilk

- Repeatability
  - Emit the RNG seed at the outset of the tests for repeatability
  - Accept an option to use a given seed

* CPAN submission

X Module list short description:

  "automatic, specification-based testing tool"

X Rename for better harmony with the global Perl namespace:
  LectroTest.pm --> Poof! (?)
  LectroTest::Simple     -> Test::LectroTest (::Simple ?)
  LectroTest::Test       -> Test::LectroTest::Property
  LectroTest::TestRunner -> Test::LectroTest::TestRunner
  LectroTest::Generator  -> Test::LectroTest::Generator

- Docs review

X Make sure LectroTest URL is in all docs

X Set version to something sensible

* Old stuff

X Replace Char's range=>[] w/ charset=>"".

X Test case $t
    return $t->redo; # if random vars don't satisfy test preconditions
    $t->label("zero") if $x == 0;
    $t->trivial       if $x == 0 && $y == 0;

C Let each property optionally specify how many times it is
  to be tested:  Property { ... } name => ..., trials => 100;


Local variables:
mode: outline
End:
