The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use Test::More tests => 3;

use strict;

use XML::CompareML::HTML;
use XML::CompareML::DocBook;
use IO::Scalar;
use Test::Differences;

{
    my $buffer    = "";
    my $file      = IO::Scalar->new( \$buffer );
    my $converter = XML::CompareML::HTML->new(
        'input_filename' => "t/files/scm-comparison.xml",
        'output_handle'  => $file,
        'data_dir'       => "./extradata",
    );

    $converter->process();

    # TEST
    ok( length($buffer) > 0, "\$buffer was filled in" );
}

{
    my $buffer    = "";
    my $file      = IO::Scalar->new( \$buffer );
    my $converter = XML::CompareML::DocBook->new(
        'input_filename' => "t/files/scm-comparison.xml",
        'output_handle'  => $file,
        'data_dir'       => "./extradata",
    );

    $converter->process();

    # TEST
    ok( length($buffer) > 0, "\$buffer was filled in" );
}

sub normalize_space
{
    my $text_ref = shift;

    ${$text_ref} =~ s{^[ \t]*}{}gms;

    return;
}

# Check for actual content.
{
    my $buffer    = "";
    my $file      = IO::Scalar->new( \$buffer );
    my $converter = XML::CompareML::HTML->new(
        'input_filename' => "examples/scm-comparison.xml",
        'output_handle'  => $file,
        'data_dir'       => "./extradata",
    );

    $converter->process();

    # Make it "if (1)" if you want to generate a good version.
    if (0)
    {
        open my $o, ">", "examples/scm-comparison.output.html";
        binmode $o, ":utf8";
        print {$o} $buffer;
        close($o);
    }

    open my $good_html_fh, "<", "examples/scm-comparison.output.html";
    binmode $good_html_fh, ":utf8";
    my $good_content;
    {
        local $/;
        $good_content = <$good_html_fh>;
    }
    close($good_html_fh);

    normalize_space( \$buffer );
    normalize_space( \$good_content );

    # TEST
    eq_or_diff( $buffer, $good_content, "XSLT Works" );
}