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 utf8;

use Test::More;
use Test::Identity;

use Tickit::Test;

use Tickit::Widget::Static;
use Tickit::Widget::VSplit;

my $win = mk_window;

my @statics = map { Tickit::Widget::Static->new( text => "Widget $_" ) } qw( A B );

my $widget = Tickit::Widget::VSplit->new(
   left_child => $statics[0],
   right_child => $statics[1],
);

ok( defined $widget, 'defined $widget' );

is( scalar $widget->children, 2, '$widget has 2 children' );

identical( $widget->left_child,  $statics[0], '$widget->left_child is $statics[0]' );
identical( $widget->right_child, $statics[1], '$widget->right_child is $statics[1]' );

is( $widget->lines,  1, '$widget->lines is 1' );
is( $widget->cols,  17, '$widget->cols is 17' );

$widget->set_window( $win );

ok( defined $statics[0]->window, '$statics[0] has window after $widget->set_window' );

flush_tickit;

is_display( [ [TEXT("Widget A"), BLANK(32), TEXT("│",bg=>4,fg=>7), TEXT("Widget B"), BLANK(31)],
              map { [BLANK(40), TEXT("│",bg=>4,fg=>7), BLANK(39)] } 2 .. 25 ],
            'Display initially' );

$widget->set_style( spacing => 4 );

flush_tickit;

is_display( [ [TEXT("Widget A"), BLANK(30), TEXT("│  │",bg=>4,fg=>7), TEXT("Widget B"), BLANK(30)],
              map { [BLANK(38), TEXT("│  │",bg=>4,fg=>7), BLANK(38)] } 2 .. 25 ],
            'Display after ->set_style spacing' );

pressmouse( press   => 1, 5, 39 );
pressmouse( drag    => 1, 5, 30 );
pressmouse( release => 1, 5, 30 );

flush_tickit;

is_display( [ [TEXT("Widget A"), BLANK(21), TEXT("│  │",bg=>4,fg=>7), TEXT("Widget B"), BLANK(39)],
              map { [BLANK(29), TEXT("│  │",bg=>4,fg=>7), BLANK(47)] } 2 .. 25 ],
            'Display after mouse drag reshape' );

done_testing;