| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 
 | * 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:
 |