package Test::UniqueTestNames::Tracker;
use strict;
use warnings;
use Test::UniqueTestNames::Test;
my %tests;
sub add_test {
my ( $class, $name, $line_number ) = @_;
die "add_test must have a line number" unless defined $line_number;
$name ||= '<no test name>';
unless ( exists $tests{ $name } ) {
$tests{ $name } = Test::UniqueTestNames::Test->new( $name, $line_number );
}
else {
$tests{ $name }->add_line_number( $line_number );
}
}
sub all_tests {
return [ values %tests ];
}
sub failing_tests {
my ( $class ) = @_;
my @failing_tests;
for( sort { $a->lowest_line_number <=> $b->lowest_line_number } values %tests ) {
push @failing_tests, $_ if $_->fails;
}
return \@failing_tests;
}
sub unnamed_ok {
my ( $class, $value ) = @_;
Test::UniqueTestNames::Test->unnamed_ok( $value );
}
1;