This role represents the core of the planning support in Test::Able.
The vast majority of the time all thats necessary, in terms of planning, is
to set the plans at the method level. For a more thorough explanation of how
planning in Test::Able works read on.
In order to facilitate planning theres a hierarchy of plans. That hierarchy
is as follows: test-related methods, test objects, test runner object, and
Test::Builder. The sum of all the constituent method plans make up the
object plan. The sum of all the constituent object plans make up the runner
object plan. And the runner object plan gets added to Test::Builders plan.
Its possible to set a methods plan at any time. To make this possible the
object and runner object plans are cleared when a method plan is set. Then,
the runner objects plan gets recalculated, at the latest, when it needs to
add to Test::Builders plan.
At the moment Test::Builder does not support deferred planning. Until such
time as Test::Builder supports it Test::Able emulates it as best it can for
its own purposes.
If Test::Builders plan is set to a numeric value then Test::Able
will not touch it. If Test::Builders plan is no_plan then Test::Able will
persuade Test::Builder to do deferred planning with what it thinks is the
Note that as a convenience, if Test::Builders plan is not declared by the
time Test::Ables run_tests() is called the plan will be set to no_plan.