The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!perl

use strict;
use warnings;

use Test::More;
use Test::Exception;

use Pinto::Chrome::Term;

#-----------------------------------------------------------------------------

{
    my $chrome = Pinto::Chrome::Term->new;
    is $chrome->should_render_diag(0), 1, 'Diag level 0 at default vebosity';
    is $chrome->should_render_diag(1), 1, 'Diag level 1 at default vebosity';
    is $chrome->should_render_diag(2), 0, 'Diag level 2 at default vebosity';
    is $chrome->should_render_diag(3), 0, 'Diag level 3 at default vebosity';

    # local $Pinto::Globals::is_interactive = 1;
    # is $chrome->should_render_progress, 1, 'Show progress at default verbosity, when interactive';

    local $Pinto::Globals::is_interactive = 0;
    is $chrome->should_render_progress, 0, 'Hide progress at default verbosity, when not interactive';
}

#-----------------------------------------------------------------------------

{
    my $chrome = Pinto::Chrome::Term->new(verbose => 1);
    is $chrome->should_render_diag(0), 1, 'Diag level 0 at verbose = 1';
    is $chrome->should_render_diag(1), 1, 'Diag level 1 at verbose = 1';
    is $chrome->should_render_diag(2), 1, 'Diag level 2 at verbose = 1';
    is $chrome->should_render_diag(3), 0, 'Diag level 3 at verbose = 1';
    is $chrome->should_render_progress, 0, 'Hide progress at verbose = 1';
}

#-----------------------------------------------------------------------------

{
    my $chrome = Pinto::Chrome::Term->new(quiet => 1);
    is $chrome->should_render_diag(0), 1, 'Diag level when quiet';
    is $chrome->should_render_diag(1), 0, 'Diag level when quiet';
    is $chrome->should_render_diag(2), 0, 'Diag level when quiet';
    is $chrome->should_render_diag(3), 0, 'Diag level when quiet';
    is $chrome->should_render_progress, 0, 'Hide progress when quiet';
}

#-----------------------------------------------------------------------------

{
    local $ENV{PINTO_COLORS} = 'dark blue,  white on_red,green';

    my $chrome = Pinto::Chrome::Term->new;
    is_deeply $chrome->colors, ['dark blue', 'white on_red', 'green'], 'Parsed color list';
}

#-----------------------------------------------------------------------------

{
    local $ENV{PINTO_NO_COLOR} = 1;

    my ($out, $err) = ('', '');
    my $chrome = Pinto::Chrome::Term->new(stdout => \$out, stderr => \$err);
    $chrome->error('This is diagnostic');
    $chrome->show('This is output');

    is $out, "This is output\n",     'Got stuff on output handle';
    is $err, "This is diagnostic\n", 'Got stuff on error handle';
}

#-----------------------------------------------------------------------------

done_testing;