The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test;
use Data::Sync;

BEGIN
{
	plan tests=>1
}

my $fh;
open ($fh,">","logfile.txt");
my $synchandle = Data::Sync->new(log=>$fh);

# test internal transformation methods of Data::Sync

my @AoH = (	{"name"=>"Test User",
		"address"=>"1 Test Street",
		"phone"=>"01234 567890"},
		{"name"=>"Test user 2",
		"address"=>["1 Office Street","2 Office Street"],
		"phone"=>["01234 567891","01234 567892"]},
		{"name"=>"Test user 3",
		"address"=>[["1 Home Street","2 Home Street"],"3 Office Street"]});


$synchandle->transforms(name=>"stripspaces",
			address=>sub{
					my $var=shift;
					$var=~s/Street/St./g;
					return $var},
			phone=>'s/^0(\d{4})/\+44 $1/');

my $result = $synchandle->runtransform(\@AoH);

close $fh;

open ($fh,"<","logfile.txt") or die;
# Turn into a hash - all lines must be *present* but order may vary
my %logline;
my %comparisonline;
my $loggingok=1;

while (<$fh>)
{
	if ($_ ne "\n")
	{
		$logline{$_}++;
	}
}

# get the comparison lines from <DATA>
while (<DATA>)
{
	$comparisonline{$_}++;
}

for my $line (keys %logline)
{
	if ($comparisonline{$line} != 1)
	{
		$loggingok--;
	}
}
ok($loggingok);	
__DATA__
Transformed Test User to TestUser
Transformed 1 Test Street to 1 Test St.
Transformed 01234 567890 to +44 1234 567890
Transformed Test user 2 to Testuser2
Transformed 1 Office Street to 1 Office St.
Transformed 2 Office Street to 2 Office St.
Transformed 01234 567891 to +44 1234 567891
Transformed 01234 567892 to +44 1234 567892
Transformed Test user 3 to Testuser3
Transformed 1 Home Street to 1 Home St.
Transformed 2 Home Street to 2 Home St.
Transformed 3 Office Street to 3 Office St.