The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Regression test for RT #18238

use strict;
use warnings;
use Test::More tests => 11;

use Bookmarks::Parser;
use Data::Dumper;

my $test_file = "t/rt18238.html";
my $parser = Bookmarks::Parser->new();
my $bookmarks = $parser->parse({filename => $test_file});

ok($bookmarks, "Parsed the sample test file");

my @exported;

for my $type (qw(netscape opera xml)) {
    my $fname = "t/test.$type.$$.html";
    push @exported, $fname;
    $bookmarks->write_file({
        filename => $fname,
        type => $type,
    });
}

my @contents;
for my $fname (@exported) {
    my $str = "";
    open my $fh, '<', $fname or die "Can't open file $fname: $!";
    binmode $fh;
    $str .= $_ while readline $fh;
    close $fh;
    ok($str, "$fname exported and read back correctly");
    push @contents, $str;
}

my $netscape_export = $contents[0];
my $opera_export = $contents[1];
my $xml_export = $contents[2];
undef @contents;

ok($netscape_export ne $opera_export, "Netscape write format != Opera write format");
ok($netscape_export ne $xml_export,   "Netscape write format != XML write format");
ok($opera_export    ne $xml_export,   "Opera write format != XML write format");

like($netscape_export => qr{^<!DOCTYPE NETSCAPE-Bookmark-file-1>}m,
    "Netscape format is exported correctly"
);

like($opera_export => qr{Opera Hotlist version \d+\.\d+}m,
    "Opera format is exported correctly"
);

like($xml_export => qr{^<\?xml version="1\.0" encoding="UTF-8"\?>},
    "XML format is exported correctly"
);

is(unlink(@exported) => scalar(@exported), "Removed temporary files");

#
# End of test