#!/usr/bin/perl
use strict;
use warnings;
use Test::More 'no_plan';
my $class = "SourceCode::LineCounter::Perl";
my @methods = qw(
_mark_in_pod _in_pod _clear_in_pod
_start_pod _end_pod _in_pod
documentation
);
use_ok( $class );
can_ok( $class, @methods );
my $counter = $class->new;
isa_ok( $counter, $class );
can_ok( $counter, @methods );
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Test marking
{
ok( ! $counter->_in_pod, "We aren't in pod at start" );
$counter->_mark_in_pod;
ok( $counter->_in_pod, "We are in pod after marking" );
$counter->_clear_in_pod;
ok( ! $counter->_in_pod, "We aren't in pod after clearing" );
$counter->_mark_in_pod;
ok( $counter->_in_pod, "We are in pod after marking second time" );
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Test starting pod that should work
{
$counter->_clear_in_pod;
ok( ! $counter->_in_pod, "We aren't in pod before starting" );
ok( $counter->_start_pod( \ "=pod\n" ), "=pod starts pod" );
ok( $counter->_in_pod, "We are in pod after =pod" );
ok( $counter->documentation, "documentation has true value" );
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Test starting pod that shouldn't work
{
foreach my $try ( ' =pod', "=.123", "= for" )
{
my $start_count = $counter->documentation;
$counter->_clear_in_pod;
ok( ! $counter->_in_pod, "We aren't in pod before starting" );
$counter->_start_pod( \ $try );
ok( ! $counter->_in_pod, "We are not in pod after [$try]" );
is( $counter->documentation, $start_count, "documentation count did not change" );
}
}
{
$counter->_mark_in_pod;
ok( $counter->_in_pod, "We are in pod after marking" );
ok( ! $counter->_start_pod( \ "=pod\n" ), "=pod doesn't start pod already in pod" );
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Test in pod when it should work
{
$counter->_mark_in_pod;
ok( $counter->_in_pod, "We are in pod after marking" );
foreach my $line ( qw(foo bar baz), '', '0', "\t \t" )
{
ok( $counter->_pod_line( \$line ), "Just saw a pod line" );
}
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Test in pod when it shouldn't work
{
$counter->_clear_in_pod;
ok( ! $counter->_in_pod, "We are in pod after marking" );
foreach my $line ( qw(foo bar baz =end), '', '0', "\t \t" )
{
ok( ! $counter->_pod_line( \$line ), "Just saw a pod line" );
}
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Test end pod when it should work
{
$counter->_mark_in_pod;
ok( $counter->_in_pod, "We are in pod after marking" );
ok( $counter->_end_pod( \ "=cut\n" ), "Ending pod" );
ok( ! $counter->_in_pod, "We are not in pod after =cut" );
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Test end pod when it shouldn't work
{
$counter->_mark_in_pod;
ok( $counter->_in_pod, "We are in pod after marking" );
ok( ! $counter->_end_pod( \ "=end\n" ), "Not ending pod" );
ok( $counter->_in_pod, "We are still in pod after =end" );
}
{
$counter->_clear_in_pod;
ok( ! $counter->_in_pod, "We are in pod after marking" );
ok( ! $counter->_end_pod( \ "=end\n" ), "Not ending pod when not in pod" );
}