Grep-Query

 view release on metacpan or  search on metacpan

t/lib/TestUtils.pm  view on Meta::CPAN

package TestUtils;

use strict;
use warnings;

use Grep::Query qw(qgrep);

use Test::More;
use Test::Differences;

use TestInfo;

sub runAsNonFieldedTests
{
	my $name = shift;
	
	my @data = @{TestInfo::getData($name)};
	my @tests = @{TestInfo::getTests($name)};
	
	plan tests => scalar(@tests) * 3;
	
	my $group = 1;
	foreach my $t (@tests)
	{
		note("== GROUP $name/$group ==");
		
		my $q = $t->{q};
	
		my $desc = $q . ($t->{desc} ? " ($t->{desc})" : ''); 
	
		my @matchesNonOO = qgrep($q, @data);
		eq_or_diff(\@matchesNonOO, $t->{e}, "(NON-OO) $desc");
		
		my $gq = Grep::Query->new($q);
		my @matchesOO = $gq->qgrep(@data);
		eq_or_diff(\@matchesOO, $t->{e}, "(OO) $desc");
		
		if ($q =~ s/regexp/=~/ig)
		{
			$desc = $q . ($t->{desc} ? " ($t->{desc})" : ''); 
			my @matchesNonOOTildeOp = qgrep($q, @data);
			eq_or_diff(\@matchesNonOOTildeOp, $t->{e}, "(EQTILDE, NON-OO) $desc");
		}
		else
		{
			pass("(no regexp op involved)");
		}
		
		$group++;
	}
}

sub runAsFieldedTests
{
	my $name = shift;
	
	my %data = %{TestInfo::getData($name)};
	my @dataValues;
	push(@dataValues, $data{$_}) foreach (sort(keys(%data)));
	my @tests = @{TestInfo::getTests($name)};
	my @fieldAccessors = @{TestInfo::getFieldAccessors($name)};
	my $matchAdjustor = TestInfo::getMatchAdjustor($name);
	
	plan tests => scalar(@tests) * ( 3 * scalar(@fieldAccessors) );
	
	my $group = 1;
	foreach my $t (@tests)
	{
		note("== GROUP $name/$group ==");



( run in 2.661 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )