#!/usr/bin/perl use strict; use warnings; use Perl6::MetaModel; use Carp 'confess'; require "lib/TestBuilder.pm"; $::TestBuilder->STORE('::TestPlan' => class 'TestBuilder::TestPlan' => { is => [ $::Object ], attributes => [ '$:expect' ], submethods => { 'BUILD' => sub { my ($self, %params) = @_; if (!exists $params{'$:expect'}) { _('$:expect' => 0); } elsif (!defined $params{'$:expect'}) { confess "Invalid or missing plan"; } } }, methods => { 'header' => sub { '1..' . _('$:expect') }, 'footer' => sub { my ($self, $run) = @_; return '' if $run == _('$:expect'); return "Expected " . _('$:expect') . " but ran $run"; } } }); $::TestBuilder->STORE('::NullPlan' => class 'TestBuilder::NullPlan' => { is => [ $::Object ], methods => { 'header' => sub { '' }, 'footer' => sub { my ($self, $run) = @_; return "1..$run"; } } }); 1; __END__ =pod =head1 NAME TestBuilder::TestPlan =head1 SYNOPSIS use TestBuilder::TestPlan; =head1 DESCRIPTION B This is a Perl6-MetaModel 2.0 port of the Perl 6 version of Test::Builder::TestPlan. This file contains both the TestBuilder::TestPlan object and a subclass, TestBuilder::NullPlan. TestBuilder::NullPlan is roughly equivalent to C in the Perl 5 Test::Builder. =head1 PUBLIC ATTRIBUTES =over 4 =item B The number of tests expected to run. =back =head1 METHODS =over 4 =item B
Returns a string containing the TAP header for this plan. =item B