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

use strict;
use warnings;
use Test::More;
use DB::Color::Highlight;
use File::Temp qw(tempfile tempdir);

my ( $fh, $file ) = tempfile();
my $dir = tempdir( CLEANUP => 1 );

ok my $highlight = DB::Color::Highlight->new(
    {
        cache_dir => $dir,
        debug_fh  => $fh,
    }
  ),
  'We should be able to create a new DB::Color::Highlight object';
isa_ok $highlight, 'DB::Color::Highlight', '... and the object it returns';

my $test_more_file = $INC{'Test/More.pm'};
open my $test_fh, '<', $test_more_file
  or die "Cannot open '$test_more_file' for reading: $!";

my $test_more_code = do { local $/; <$test_fh> };
close $test_fh;

can_ok $highlight, '_get_path_and_file';
my ( $md5_path, $md5_file ) = $highlight->_get_path_and_file($test_more_code);
ok $md5_path, '... and it should return a path';
ok $md5_file, '... and it should return a md5_filename';

my ( $md5_path1, $md5_file1 ) = $highlight->_get_path_and_file($test_more_code);
is $md5_path1, $md5_path, 'Calling it more than once should return the same path';
is $md5_file1, $md5_file, '... and the same md5_file';

can_ok $highlight, '_get_highlighted_text';
ok my $highlighted =  $highlight->_get_highlighted_text($test_more_code),
    '... and calling it should highlight our text (*cough*)';
my @old_lines = split /\n/ => $test_more_code;
my @new_lines = split /\n/ => $highlighted;

is @old_lines, @new_lines, '... and the number of lines of code should be the same';
diag @old_lines[165..169];
diag @new_lines[165..169];

done_testing;