* Key

X = Done

* Improvements

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

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

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

- Test apparatus
  X label & friends
  X output & reporting
  X integrate w/ Test::Harness
  - Seed for repeatable tests

- Docs
  - TestRunner
  - Property
  - Tutorial 
- 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

- Make sure LectroTest URL is in all docs

- Set version to something sensible

* Todo

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;


Local variables:
mode: outline
End:
