summaryrefslogtreecommitdiff
path: root/t/10initial.t
diff options
context:
space:
mode:
Diffstat (limited to 't/10initial.t')
-rw-r--r--t/10initial.t117
1 files changed, 117 insertions, 0 deletions
diff --git a/t/10initial.t b/t/10initial.t
new file mode 100644
index 0000000..e42d82f
--- /dev/null
+++ b/t/10initial.t
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use Tickit::Test;
+
+use Tickit::Widget::Scroller;
+use Tickit::Widget::Scroller::Item::Text;
+
+my $win = mk_window;
+
+my $scroller = Tickit::Widget::Scroller->new;
+
+ok( defined $scroller, 'defined $scroller' );
+
+$scroller->push(
+ map { Tickit::Widget::Scroller::Item::Text->new( $_ ) }
+ "The first line",
+ "Another line in the middle",
+ "The third line",
+);
+
+$scroller->set_window( $win );
+
+flush_tickit;
+
+is_termlog( [ GOTO(0,0),
+ SETPEN,
+ PRINT("The first line"),
+ SETBG(undef),
+ ERASECH(66),
+ GOTO(1,0),
+ SETPEN,
+ PRINT("Another line in the middle"),
+ SETBG(undef),
+ ERASECH(54),
+ GOTO(2,0),
+ SETPEN,
+ PRINT("The third line"),
+ SETBG(undef),
+ ERASECH(66),
+ map { GOTO($_,0), SETBG(undef), ERASECH(80) } 3 .. 24 ],
+ 'Termlog initially' );
+
+is_display( [ "The first line",
+ "Another line in the middle",
+ "The third line" ],
+ 'Display initially' );
+
+is( scalar $scroller->line2item( 0 ), 0, 'scalar line2item 0' );
+is_deeply( [ $scroller->line2item( 0 ) ], [ 0, 0 ], 'line2item 0' );
+is_deeply( [ $scroller->line2item( 1 ) ], [ 1, 0 ], 'line2item 1' );
+is_deeply( [ $scroller->line2item( 2 ) ], [ 2, 0 ], 'line2item 2' );
+is_deeply( [ $scroller->line2item( 3 ) ], [ ], 'line2item 3' );
+
+is_deeply( [ $scroller->line2item( -1 ) ], [ ], 'line2item -1' );
+is_deeply( [ $scroller->line2item( -23 ) ], [ 2, 0 ], 'line2item -23' );
+
+is( $scroller->item2line( 0 ), 0, 'item2line 0' );
+is( $scroller->item2line( 0, -1 ), 0, 'item2line 0, -1' );
+is( $scroller->item2line( 1 ), 1, 'item2line 1' );
+is( $scroller->item2line( 2 ), 2, 'item2line 2' );
+
+is( $scroller->item2line( -1 ), 2, 'item2line -1' );
+
+resize_term( 25, 20 );
+
+flush_tickit;
+
+is_termlog( [ GOTO(0,0),
+ SETPEN,
+ PRINT("The first line"),
+ SETBG(undef),
+ ERASECH(6),
+ GOTO(1,0),
+ SETPEN,
+ PRINT("Another line in the "),
+ GOTO(2,0),
+ SETPEN,
+ PRINT("middle"),
+ SETBG(undef),
+ ERASECH(14),
+ GOTO(3,0),
+ SETPEN,
+ PRINT("The third line"),
+ SETBG(undef),
+ ERASECH(6),
+ map { GOTO($_,0), SETBG(undef), ERASECH(20) } 4 .. 24 ],
+ 'Termlog after narrowing' );
+
+is_display( [ "The first line",
+ "Another line in the ",
+ "middle",
+ "The third line" ],
+ 'Display after narrowing' );
+
+is_deeply( [ $scroller->line2item( 0 ) ], [ 0, 0 ], 'line2item 0' );
+is_deeply( [ $scroller->line2item( 1 ) ], [ 1, 0 ], 'line2item 1' );
+is_deeply( [ $scroller->line2item( 2 ) ], [ 1, 1 ], 'line2item 2' );
+is_deeply( [ $scroller->line2item( 3 ) ], [ 2, 0 ], 'line2item 3' );
+is_deeply( [ $scroller->line2item( 4 ) ], [ ], 'line2item 4' );
+
+is_deeply( [ $scroller->line2item( -1 ) ], [ ], 'line2item -1' );
+is_deeply( [ $scroller->line2item( -22 ) ], [ 2, 0 ], 'line2item -22' );
+
+is( $scroller->item2line( 0 ), 0, 'item2line 0' );
+is( $scroller->item2line( 0, -1 ), 0, 'item2line 0, -1' );
+is( $scroller->item2line( 1 ), 1, 'item2line 1' );
+is( $scroller->item2line( 1, -1 ), 2, 'item2line 1, -1' );
+is( $scroller->item2line( 2 ), 3, 'item2line 2' );
+
+is( $scroller->item2line( -1 ), 3, 'item2line -1' );
+
+done_testing;