#!/usr/bin/perl -w
use strict;
use Test::More tests => 14;
my $warning ="";
BEGIN {
chdir 't' if -d 't';
use lib '../blib/lib', 'lib/', '..';
}
my $mod = "Parse::DebControl";
use_ok($mod);
my $writer;
ok($writer = new Parse::DebControl);
ok(!$writer->write_mem(), "write_mem should fail without data");
ok(!$writer->write_file(), "write_file should fail without a filename or handle");
ok(!$writer->write_file('/fake/file'), "write_file should fail without data");
ok($writer->write_mem({'foo' => 'bar'}) eq "foo: bar\n", "write_* should translate simple items correctly");
ok($writer->write_mem({'foo' => ''}) eq "foo:\n", "write_* should accept (begrudgingly) blank hashkeys");
ok($writer->write_mem({'foo' => undef}) eq "foo:\n", "write_* should correctly handle undef items");
SKIP: {
eval { require Tie::IxHash };
skip "Tie::IxHash is not installed", 3 if($@);
my $test1 = "Test: Item1\nTest2: Item2\nTest3: Item3\n";
my $test2 = "Test: Items\n Hello\n There\n .\n World\nAnother-item: world\n";
my $i = 1;
foreach($test1, $test2, "$test1\n$test2"){
ok($writer->write_mem($writer->parse_mem($_, {'useTieIxHash' => 1})) eq $_, "...Fidelity test $i");
$i++;
}
}
my $warnings = "";
local $SIG{__WARN__} = sub { $warnings = $_};
my $mem = $writer->write_mem([{}]);
ok($warnings eq "", "Writing blank hashrefs doesn't throw warnings"); #Version 1.6 fix
$mem = $writer->write_mem([]);
ok($warnings eq "", "Writing blank arrayrefs doesn't throw warnings"); #Version 1.9 fix
$mem = $writer->write_mem();
ok($warnings eq "", "Writing blank arrayrefs doesn't throw warnings"); #Version 1.9 fix