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

use strict;
use warnings;

use Test::More;

use Tickit::Test;

use Tickit::Widget::CheckButton;

my $root = mk_window;

my $active;
my $button = Tickit::Widget::CheckButton->new(
   label => "Check button",
   on_toggle => sub { ( undef, $active ) = @_ },
);

is( $button->label, "Check button", '$button->label' );
ok( !$button->is_active, '$button->is_active false initially' );

$button->set_window( $root );

flush_tickit;

is_display( [ [TEXT("[ ]",fg=>15,b=>1), BLANK(2), TEXT("Check button")] ],
            'Display initially' );

pressmouse( press => 1, 0, 7 );

flush_tickit;

is_display( [ [TEXT("[X]",fg=>15,b=>1), BLANK(2), TEXT("Check button",b=>1)] ],
            'Display after click' );

ok( $button->is_active, '$button->is_active true after click' );
ok( $active, 'on_toggle invoked after click' );

pressmouse( press => 1, 0, 7 );

flush_tickit;

is_display( [ [TEXT("[ ]",fg=>15,b=>1), BLANK(2), TEXT("Check button")] ],
            'Display after second click' );

ok( !$button->is_active, '$button->is_active true after second click' );
ok( !$active, 'on_toggle invoked after second click' );

done_testing;