first commit
This commit is contained in:
172
perl/lib/Graph-Easy-0.76/t/fb.t
Normal file
172
perl/lib/Graph-Easy-0.76/t/fb.t
Normal file
@@ -0,0 +1,172 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
# test printing into a framebuffer
|
||||
|
||||
use Test::More;
|
||||
use strict;
|
||||
|
||||
BEGIN
|
||||
{
|
||||
plan tests => 36;
|
||||
chdir 't' if -d 't';
|
||||
use lib '../lib';
|
||||
use_ok ("Graph::Easy::Node") or die($@);
|
||||
use_ok ("Graph::Easy") or die($@);
|
||||
use_ok ("Graph::Easy::As_ascii") or die($@);
|
||||
};
|
||||
|
||||
can_ok ("Graph::Easy::Node", qw/
|
||||
as_ascii
|
||||
|
||||
_printfb
|
||||
_printfb_ver
|
||||
_draw_label
|
||||
_framebuffer
|
||||
_aligned_label
|
||||
/);
|
||||
|
||||
#############################################################################
|
||||
# general framebuffer tests
|
||||
|
||||
my $node = Graph::Easy::Node->new();
|
||||
|
||||
is (ref($node), 'Graph::Easy::Node');
|
||||
|
||||
is ($node->error(), '', 'no error yet');
|
||||
|
||||
my $fb = $node->_framebuffer(2,3);
|
||||
|
||||
is (join ("::", @$fb), " :: :: ", 'framebuffer set up');
|
||||
|
||||
$node->_printfb( $fb, 0,0, '+');
|
||||
is (join ("::", @$fb), "+ :: :: ", 'print +');
|
||||
|
||||
$node->_printfb( $fb, 1,0, '+');
|
||||
is (join ("::", @$fb), "++:: :: ", 'print +');
|
||||
|
||||
$node->_printfb( $fb, 1,2, '+');
|
||||
is (join ("::", @$fb), "++:: :: +", 'print +');
|
||||
|
||||
$node->_printfb( $fb, 0,0, '--');
|
||||
is (join ("::", @$fb), "--:: :: +", 'print --');
|
||||
|
||||
$node->_printfb( $fb, 0,1, "''");
|
||||
is (join ("::", @$fb), "--::'':: +", "print ''");
|
||||
|
||||
#############################################################################
|
||||
# multiline printing
|
||||
|
||||
$fb = $node->_framebuffer(2,5);
|
||||
|
||||
$node->_printfb( $fb, 0,3, "+", "+");
|
||||
is (join ("::", @$fb), " :: :: ::+ ::+ ", 'print "+\n+"');
|
||||
|
||||
$node->_printfb( $fb, 0,2, "|", "|");
|
||||
is (join ("::", @$fb), " :: ::| ::| ::+ ", 'print "\|\n\|"');
|
||||
|
||||
$fb = $node->_framebuffer(4,5);
|
||||
is (join ("::", @$fb), " :: :: :: :: ", 'new fb set up');
|
||||
|
||||
$node->_printfb( $fb, 1,1, "01", "234");
|
||||
|
||||
is (join ("::", @$fb), " :: 01 :: 234:: :: ", 'new fb set up');
|
||||
|
||||
#############################################################################
|
||||
# _draw_border() tests
|
||||
|
||||
$fb = $node->_framebuffer(12,6);
|
||||
|
||||
$node->{w} = 12;
|
||||
$node->{h} = 6;
|
||||
|
||||
$node->_draw_border( $fb, 'solid', 'solid', 'solid', 'solid');
|
||||
|
||||
is (join ("::", @$fb),
|
||||
'+----------+::| |::| |::| |::| |::+----------+',
|
||||
'solid border');
|
||||
|
||||
|
||||
$fb = $node->_framebuffer(8,4);
|
||||
|
||||
$node->{w} = 8;
|
||||
$node->{h} = 4;
|
||||
|
||||
my @expect = (
|
||||
' \n \n \n ',
|
||||
'+------+\n| |\n| |\n+------+',
|
||||
'........\n: :\n: :\n:......:',
|
||||
'+ - - -+\n\' \'\n\' \'\n+ - - -+',
|
||||
'+-.-.-.+\n! !\n! !\n+-.-.-.+',
|
||||
'+.-..-.+\n| |\n: :\n+.-..-.+',
|
||||
'########\n# #\n# #\n########',
|
||||
'#======#\nH H\nH H\n#======#',
|
||||
'# = = =#\n" "\n" "\n# = = =#',
|
||||
'+~~~~~~+\n{ {\n} }\n+~~~~~~+',
|
||||
);
|
||||
|
||||
my $i = 0;
|
||||
for my $style (qw/ none solid dotted dashed dot-dash dot-dot-dash bold double double-dash wave/)
|
||||
{
|
||||
$node->_draw_border( $fb, $style, $style, $style, $style);
|
||||
is (join ('\n', @$fb),
|
||||
$expect[$i],
|
||||
"$style border");
|
||||
$i++;
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# _draw_border() tests with different styles
|
||||
|
||||
$fb = $node->_framebuffer(8,4);
|
||||
|
||||
$node->{w} = 8;
|
||||
$node->{h} = 4;
|
||||
|
||||
$node->_draw_border( $fb, 'solid', 'dotted', 'solid', 'solid');
|
||||
|
||||
is (join ("::", @$fb),
|
||||
'+------+::| |::| |:::......:',
|
||||
'solid border, except bottom, which is dotted');
|
||||
|
||||
#############################################################################
|
||||
# label alignments
|
||||
|
||||
$node->set_attribute('label', 'left\r right\l left\c center\n normal');
|
||||
|
||||
my ($lines,$aligns) = $node->_aligned_label();
|
||||
|
||||
is_deeply ( $lines, [ 'left', 'right', 'left', 'center', 'normal' ],
|
||||
'lines are ok');
|
||||
is_deeply ( $aligns, [ 'c', 'r', 'l', 'c', 'c', ], 'aligns is ok');
|
||||
|
||||
# empty lines at the are thrown away
|
||||
$node->set_attribute('label', 'left\r right\l left\c center\n normal\c');
|
||||
|
||||
($lines,$aligns) = $node->_aligned_label();
|
||||
|
||||
is_deeply ( $lines, [ 'left', 'right', 'left', 'center', 'normal' ],
|
||||
'lines are ok');
|
||||
is_deeply ( $aligns, [ 'c', 'r', 'l', 'c', 'c', ], 'aligns is ok');
|
||||
|
||||
# start with alignment
|
||||
$node->set_attribute('label', '\rleft\r right\l left\c center\n normal\c');
|
||||
|
||||
($lines,$aligns) = $node->_aligned_label();
|
||||
|
||||
is_deeply ( $lines, [ '', 'left', 'right', 'left', 'center', 'normal' ],
|
||||
'lines are ok');
|
||||
is_deeply ( $aligns, [ 'c', 'r', 'r', 'l', 'c', 'c', ], 'aligns is ok');
|
||||
|
||||
# start with alignment
|
||||
$node->set_attribute('label', '\r\l\rleft\r right\l left\c center\n normal\c');
|
||||
|
||||
($lines,$aligns) = $node->_aligned_label();
|
||||
|
||||
is_deeply ( $lines, [ '','','','left', 'right', 'left', 'center', 'normal' ],
|
||||
'lines are ok');
|
||||
is_deeply ( $aligns, [ 'c','r','l','r', 'r', 'l', 'c', 'c', ], 'aligns is ok');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user