File: 04on_demand.t

package info (click to toggle)
libtickit-widget-scrollbox-perl 0.12-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 168 kB
  • sloc: perl: 868; makefile: 2
file content (73 lines) | stat: -rw-r--r-- 1,603 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;

use Tickit::Test;

use Tickit::Widget::Static;
use Tickit::Widget::ScrollBox;

my $win = mk_window;

# Needs 40x20
my $static = Tickit::Widget::Static->new(
   text => join "\n", map { $_ x 40 } 'A' .. 'T'
);

my $widget = Tickit::Widget::ScrollBox->new(
   horizontal => "on_demand",
   vertical   => "on_demand",
)->set_child( $static );

$widget->set_window( $win );
flush_tickit;

# Oversized at 80x25
{
   ok( !$widget->_h_visible, 'H invisible at 80x25' );
   ok( !$widget->_v_visible, 'V invisible at 80x25' );
}

# Undersized vertically at 80x15
{
   $win->resize( 15, 80 );
   ok( !$widget->_h_visible, 'H invisible at 80x15' );
   ok(  $widget->_v_visible, 'V visible at 80x15' );
}

# Undersized horizontally at 30x25
{
   $win->resize( 25, 30 );
   ok(  $widget->_h_visible, 'H visible at 30x25' );
   ok( !$widget->_v_visible, 'V invisible at 30x25' );
}

# Undersized at 30x15
{
   $win->resize( 15, 30 );
   ok(  $widget->_h_visible, 'H visible at 30x15' );
   ok(  $widget->_v_visible, 'V visible at 30x15' );
}

# Exactly at limits
{
   $win->resize( 20, 40 );
   ok( !$widget->_h_visible, 'H invisible at 40x20' );
   ok( !$widget->_v_visible, 'V invisible at 40x20' );
}

# Making either scrollbar visible forces the other when at-limit
{
   $win->resize( 20, 39 );
   ok(  $widget->_h_visible, 'H visible at 39x20' );
   ok(  $widget->_v_visible, 'V visible at 39x20' );

   $win->resize( 19, 40 );
   ok(  $widget->_h_visible, 'H visible at 40x19' );
   ok(  $widget->_v_visible, 'V visible at 40x19' );
}

done_testing;