use strict;
use Test::More 0.98;
use utf8;
use Text::ANSI::Fold qw(ansi_fold);
sub folded {
my($folded, $rest) = ansi_fold(@_);
$folded;
}
$_ = "12345678901234567890123456789012345678901234567890";
is(folded($_, 1), "1", "ASCII: 1");
is(folded($_, 10), "1234567890", "ASCII: 10");
is(folded($_, length), $_, "ASCII: just");
is(folded($_, length($_) * 2), $_, "ASCII: long");
is(folded($_, -1), $_, "ASCII: negative");
$_ = "123456789012345678901234567890";
is(folded($_, 1), "1", "WIDE: 1");
is(folded($_, 2), "1", "WIDE: 2");
is(folded($_, 10), "12345", "WIDE: 10");
is(folded($_, length($_) * 2), $_, "WIDE: just");
is(folded($_, length($_) * 4), $_, "WIDE: long");
is(folded($_, 9), "1234", "WIDE: one short");
is(folded($_, 11), "12345", "WIDE: one over");
$_ = "aaa/bbb/cccdddeeefff";
is(folded($_, 5), "aaa/b", "boundary: none 5");
is(folded($_, 6), "aaa/bb", "boundary: none 6");
is(folded($_, 7), "aaa/bbb", "boundary: none 7");
is(folded($_, 5, boundary => 'word'), "aaa/", "boundary: word 5");
is(folded($_, 6, boundary => 'word'), "aaa/", "boundary: word 6");
is(folded($_, 7, boundary => 'word'), "aaa/bbb", "boundary: word 7");
is(folded($_, 9, boundary => 'word'), "aaa/bbb/c", "boundary: word 9");
configure Text::ANSI::Fold boundary => 'word';
is(folded($_, 5), "aaa/", "config boundary: word 5");
is(folded($_, 6), "aaa/", "config boundary: word 6");
is(folded($_, 7), "aaa/bbb", "config boundary: word 7");
is(folded($_, 9), "aaa/bbb/c", "config boundary: word 9");
Text::ANSI::Fold->configure(width => 6);
is(folded($_), "aaa/", "config width: word 6");
is(folded($_, undef, padding => 1), "aaa/ ", "config width: padding");
is(folded($_, undef, padding => 1, padchar => '-'),
"aaa/--", "config width: padding, padchar");
$_ = "000 000 000";
is(folded($_, 5, boundary => 'word'), "000 ", "boundary: check 0");
is(folded($_, 6, boundary => 'word'), "000 ", "boundary: check 0");
is(folded($_, 7, boundary => 'word'), "000 000", "boundary: check 0");
$_ = "사용하지 않은 데이터는";
is(folded($_, 8, boundary => 'word'), "사용하지", "boundary: check Hangul");
is(folded($_, 9, boundary => 'word'), "사용하지 ", "boundary: check Hangul");
is(folded($_, 10, boundary => 'word'), "사용하지 ", "boundary: check Hangul");
is(folded($_, 11, boundary => 'word'), "사용하지 ", "boundary: check Hangul");
is(folded($_, 12, boundary => 'word'), "사용하지 ", "boundary: check Hangul");
is(folded($_, 13, boundary => 'word'), "사용하지 않은", "boundary: check Hangul");
is(folded($_, 14, boundary => 'word'), "사용하지 않은 ", "boundary: check Hangul");
configure Text::ANSI::Fold width => 0, boundary => '';
$_ = "__________aaa bbb/ccc ddd";
is(folded($_, 15, boundary => 'space'), "__________aaa ", "boundary: space 15");
is(folded($_, 16, boundary => 'space'), "__________aaa ", "boundary: space 16");
is(folded($_, 17, boundary => 'space'), "__________aaa ", "boundary: space 17");
is(folded($_, 19, boundary => 'space'), "__________aaa ", "boundary: space 19");
is(folded($_, 21, boundary => 'space'), "__________aaa bbb/ccc", "boundary: space 21");
configure Text::ANSI::Fold boundary => 'space';
is(folded($_, 15), "__________aaa ", "config boundary: space 15");
is(folded($_, 16), "__________aaa ", "config boundary: space 16");
is(folded($_, 17), "__________aaa ", "config boundary: space 17");
is(folded($_, 19), "__________aaa ", "config boundary: space 19");
is(folded($_, 21), "__________aaa bbb/ccc", "config boundary: space 19");
done_testing;