package Fripost::Tests; use 5.010_000; use strict; use warnings; use utf8; =head1 NAME Tests.pm =cut our @EXPORT = qw/build_alias_graph search_path/; our @ISA = qw(Exporter); use FindBin qw($Bin); use lib "$Bin/lib"; use Fripost::Schema; sub build_alias_graph { my $graph; foreach (@_) { my $to = $_->{goto}; foreach my $from (@{$_->{address}}) { push @{$graph->{$from}}, $to; } } return $graph; } sub search_path { my ($graph, $from, $to) = @_; my @stack; push @stack, [$from]; while (@stack) { my $path = pop @stack; my $last = @{$path}[$#$path]; return @$path if $last eq $to; foreach (@{$graph->{$last}}) { push @stack, [@$path,$_]; } } } =head1 AUTHOR Stefan Kangas C<< >> Guilhem Moulin C<< >> =head1 COPYRIGHT Copyright 2010,2011 Stefan Kangas. Copyright 2012 Guilhem Moulin. =head1 LICENSE This program is free software; you can redistribute it and/or modify it under the same terms as perl itself. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =cut 1; # End of Tests.pm __END__