Add test cases for unicode and invalid manual encoding #1

This commit is contained in:
Thomas Jensen 2021-02-11 10:49:29 +01:00
parent c370772ee0
commit 363e0266e0
No known key found for this signature in database
GPG Key ID: A4ACEE270D0FB7DB
12 changed files with 568 additions and 13 deletions

View File

@ -2197,7 +2197,6 @@ shapes {
" ",
" ",
" ",
" ",
" ")
s ("_",
@ -2208,7 +2207,6 @@ shapes {
" ",
" ",
" ",
" ",
" ")
w ("|")
@ -2221,8 +2219,7 @@ shapes {
" . . . ",
" / ) | ",
"' _.' | ",
"'-'/ \\ ",
" ")
"'-'/ \\ ")
sse ("_ __",
" |/ ",
@ -2232,7 +2229,6 @@ shapes {
" ",
" ",
" ",
" ",
" ")
}

View File

@ -1380,7 +1380,7 @@ static int read_all_input(const int use_stdin)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
{
char buf[LINE_MAX_BYTES + 2]; /* input buffer */
char buf[LINE_MAX_BYTES + 3]; /* input buffer incl. newline + zero terminator */
size_t len_chars;
size_t input_size = 0; /* number of elements allocated */
uint32_t *mbtemp = NULL; /* temp string for preparing the multi-byte input */
@ -1396,7 +1396,7 @@ static int read_all_input(const int use_stdin)
/*
* Start reading
*/
while (fgets(buf, LINE_MAX_BYTES + 1, opt.infile)) {
while (fgets(buf, LINE_MAX_BYTES + 2, opt.infile)) {
if (input.anz_lines % 100 == 0) {
input_size += 100;
line_t *tmp = (line_t *) realloc(input.lines, input_size * sizeof(line_t));

View File

@ -263,7 +263,7 @@ size_t expand_tabs_into(const uint32_t *input_buffer, const int tabstop, uint32_
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
{
static uint32_t temp[LINE_MAX_BYTES * MAX_TABSTOP + 1]; /* work string */
static uint32_t temp[LINE_MAX_BYTES + 100]; /* work string */
size_t io; /* character position in work string */
size_t tabnum = 0; /* index of the current tab */
@ -294,7 +294,7 @@ size_t expand_tabs_into(const uint32_t *input_buffer, const int tabstop, uint32_
ucs4_t puc;
const uint32_t *rest = input_buffer;
io = 0;
while ((rest = u32_next(&puc, rest))) {
while ((rest = u32_next(&puc, rest)) && io < (LINE_MAX_BYTES - 12)) {
if (puc == char_tab) {
if (*tabpos_len > 0) {
(*tabpos)[tabnum++] = io;
@ -314,7 +314,6 @@ size_t expand_tabs_into(const uint32_t *input_buffer, const int tabstop, uint32_
if (*text == NULL) {
return 0;
}
return io;
}

View File

@ -1,8 +1,8 @@
:ARGS
-s 15x7 -a l
:INPUT
aaa
bbbb
aaa
bbbb
ccccc
:OUTPUT-FILTER
:EXPECTED
@ -13,4 +13,4 @@ ccccc
/* ccccc */
/* */
/*************/
:EOF
:EOF

View File

@ -0,0 +1,15 @@
:DESC
A non-existent encoding is specified. Boxes falls back to the system encoding and logs a warning.
:ARGS
-n NON-EXISTENT
:INPUT
foo
:OUTPUT-FILTER
s/( falling back to) .*$/\1 [system encoding]/
:EXPECTED
boxes: Invalid character encoding: NON-EXISTENT - falling back to [system encoding]
/*******/
/* foo */
/*******/
:EOF

430
test/115_lots_of_lines.txt Normal file
View File

@ -0,0 +1,430 @@
:DESC
The function read_all_input() in 'boxes' module has a hard-coded increment of 100, and the buffer must be extended
after that. Test more than 100 lines.
:ARGS
:INPUT
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit
amet massa vitae tortor condimentum lacinia quis vel eros.
Feugiat in ante metus dictum at tempor. Neque aliquam
vestibulum morbi blandit cursus. Non pulvinar neque laoreet
suspendisse interdum consectetur libero. Sit amet massa vitae
tortor condimentum lacinia. Faucibus pulvinar elementum integer
enim neque volutpat ac tincidunt vitae. Tortor dignissim
convallis aenean et tortor at risus. Nunc sed blandit libero
volutpat. Dolor magna eget est lorem. Aliquet nec ullamcorper
sit amet risus nullam eget. Pellentesque elit eget gravida cum
sociis natoque penatibus et. Elit scelerisque mauris
pellentesque pulvinar pellentesque habitant morbi. Tincidunt
eget nullam non nisi est sit. Eu non diam phasellus vestibulum
lorem sed risus. Integer eget aliquet nibh praesent.
Nascetur ridiculus mus mauris vitae ultricies leo integer
malesuada. Nulla facilisi morbi tempus iaculis urna id volutpat
lacus laoreet. Eu mi bibendum neque egestas. Arcu felis
bibendum ut tristique et egestas quis ipsum suspendisse. Dolor
sit amet consectetur adipiscing. Turpis massa sed elementum
tempus egestas sed sed risus. Est pellentesque elit ullamcorper
dignissim cras tincidunt lobortis. Arcu risus quis varius quam
quisque id diam vel. Ornare aenean euismod elementum nisi quis
eleifend. Duis at consectetur lorem donec massa sapien faucibus
et molestie. Lorem ipsum dolor sit amet consectetur adipiscing
elit. Feugiat nibh sed pulvinar proin gravida hendrerit. Amet
mauris commodo quis imperdiet massa tincidunt nunc. Nisl purus
in mollis nunc sed. Nec ultrices dui sapien eget mi. Sagittis
eu volutpat odio facilisis mauris sit.
In nulla posuere sollicitudin aliquam ultrices sagittis orci a.
At in tellus integer feugiat scelerisque varius. Mauris
pellentesque pulvinar pellentesque habitant morbi tristique
senectus. Tortor dignissim convallis aenean et tortor at risus.
Sed turpis tincidunt id aliquet risus. Odio eu feugiat pretium
nibh. Est pellentesque elit ullamcorper dignissim cras
tincidunt lobortis feugiat vivamus. Vel pretium lectus quam id
leo in. Nec ullamcorper sit amet risus nullam eget felis eget.
In hac habitasse platea dictumst quisque sagittis. Augue lacus
viverra vitae congue eu. Eu tincidunt tortor aliquam nulla
facilisi cras fermentum.
A pellentesque sit amet porttitor. Fringilla phasellus faucibus
scelerisque eleifend donec. Pulvinar sapien et ligula
ullamcorper malesuada proin libero nunc. Cursus vitae congue
mauris rhoncus aenean vel elit scelerisque mauris. Elementum eu
facilisis sed odio. Est ultricies integer quis auctor elit sed
vulputate mi sit. Congue quisque egestas diam in arcu cursus
euismod quis. Amet mauris commodo quis imperdiet massa
tincidunt nunc pulvinar. Sit amet consectetur adipiscing elit
pellentesque habitant morbi. Laoreet non curabitur gravida arcu
ac tortor dignissim convallis aenean. Amet dictum sit amet
justo donec enim diam. Sagittis aliquam malesuada bibendum arcu
vitae elementum curabitur vitae nunc. Porta lorem mollis
aliquam ut porttitor. At in tellus integer feugiat scelerisque.
Viverra maecenas accumsan lacus vel facilisis. Suscipit tellus
mauris a diam. Mi sit amet mauris commodo. Ut eu sem integer
vitae justo eget. Senectus et netus et malesuada fames ac turpis.
Euismod elementum nisi quis eleifend quam. Auctor neque vitae
tempus quam pellentesque nec nam aliquam sem. Ultricies mi eget
mauris pharetra et ultrices neque ornare. Vel turpis nunc eget
lorem dolor sed viverra ipsum nunc. Nibh praesent tristique
magna sit amet purus gravida quis. Suspendisse in est ante in
nibh mauris cursus mattis. Rutrum quisque non tellus orci ac
auctor augue mauris. Elit at imperdiet dui accumsan sit. Eu
consequat ac felis donec et. Integer malesuada nunc vel risus
commodo. Aenean pharetra magna ac placerat vestibulum lectus.
Lacus viverra vitae congue eu consequat ac felis. Risus viverra
adipiscing at in. Dolor sit amet consectetur adipiscing elit ut
aliquam. Scelerisque mauris pellentesque pulvinar pellentesque
habitant morbi. Pulvinar etiam non quam lacus suspendisse
faucibus. Quam lacus suspendisse faucibus interdum posuere.
Imperdiet nulla malesuada pellentesque elit eget gravida cum
sociis. Pretium aenean pharetra magna ac placerat. Turpis nunc
eget lorem dolor sed viverra.
Tellus at urna condimentum mattis pellentesque id nibh tortor
id. Est sit amet facilisis magna etiam tempor orci. Est lorem
ipsum dolor sit amet. Quis viverra nibh cras pulvinar mattis
nunc sed. Magnis dis parturient montes nascetur ridiculus mus
mauris. Justo eget magna fermentum iaculis eu non diam
phasellus vestibulum. Ipsum dolor sit amet consectetur
adipiscing elit ut aliquam. Mi proin sed libero enim sed.
Quisque egestas diam in arcu. Proin libero nunc consequat
interdum varius sit amet. Turpis massa tincidunt dui ut. Erat
nam at lectus urna duis. Tristique senectus et netus et
malesuada fames ac turpis. Fermentum posuere urna nec
tincidunt. Risus nullam eget felis eget. Odio facilisis mauris
sit amet. Adipiscing elit pellentesque habitant morbi tristique
senectus et netus. In hac habitasse platea dictumst vestibulum.
Sit amet volutpat consequat mauris nunc congue nisi vitae.
Lacus luctus accumsan tortor posuere ac ut consequat semper. In
ornare quam viverra orci sagittis eu volutpat odio facilisis.
Lobortis scelerisque fermentum dui faucibus in ornare.
Penatibus et magnis dis parturient. Consectetur adipiscing elit
duis tristique. Amet dictum sit amet justo donec enim diam.
Sapien faucibus et molestie ac. Amet volutpat consequat mauris
nunc. Tortor condimentum lacinia quis vel eros donec. Commodo
sed egestas egestas fringilla. Pulvinar sapien et ligula
ullamcorper malesuada proin. Diam volutpat commodo sed egestas
egestas fringilla phasellus.
Ut faucibus pulvinar elementum integer enim neque volutpat ac
tincidunt. Egestas tellus rutrum tellus pellentesque eu
tincidunt tortor aliquam nulla. Quisque id diam vel quam
elementum. Non sodales neque sodales ut etiam. Consectetur a
erat nam at lectus urna duis convallis. Felis imperdiet proin
fermentum leo vel orci porta. Tellus in metus vulputate eu
scelerisque felis. Pharetra convallis posuere morbi leo urna
molestie at. Auctor augue mauris augue neque gravida. In
iaculis nunc sed augue lacus viverra vitae congue. Senectus et
netus et malesuada fames ac turpis egestas integer. Non nisi
est sit amet facilisis magna etiam tempor. Blandit cursus risus
at ultrices mi tempus imperdiet. Enim ut sem viverra aliquet
eget sit amet tellus cras. Ultrices mi tempus imperdiet nulla
malesuada pellentesque elit eget. Justo laoreet sit amet
cursus. Amet consectetur adipiscing elit pellentesque. Pulvinar
sapien et ligula ullamcorper malesuada proin libero nunc
consequat.
Sem fringilla ut morbi tincidunt augue interdum. Tempor orci eu
lobortis elementum nibh. Elementum eu facilisis sed odio morbi
quis commodo odio aenean. Vitae nunc sed velit dignissim
sodales ut eu. Felis eget nunc lobortis mattis aliquam
faucibus. Viverra tellus in hac habitasse. Tristique senectus
et netus et malesuada fames ac turpis. Nisl rhoncus mattis
rhoncus urna neque viverra justo. Praesent elementum facilisis
leo vel fringilla. Pellentesque adipiscing commodo elit at.
Libero enim sed faucibus turpis in eu mi bibendum. Faucibus
nisl tincidunt eget nullam non nisi est sit amet. Bibendum est
ultricies integer quis. Mattis enim ut tellus elementum
sagittis vitae et leo. Vitae aliquet nec ullamcorper sit amet
risus nullam eget. Vestibulum sed arcu non odio euismod lacinia
at. Enim neque volutpat ac tincidunt. Scelerisque in dictum non
consectetur. Rhoncus dolor purus non enim praesent. Convallis
posuere morbi leo urna molestie at elementum eu.
In iaculis nunc sed augue. Massa massa ultricies mi quis
hendrerit dolor. Est velit egestas dui id ornare arcu odio ut
sem. Ac turpis egestas integer eget aliquet nibh praesent
tristique magna. Massa enim nec dui nunc mattis. Diam phasellus
vestibulum lorem sed risus ultricies. Vivamus at augue eget
arcu. Ullamcorper velit sed ullamcorper morbi tincidunt ornare
massa. Aliquam sem fringilla ut morbi tincidunt augue. Tellus
in metus vulputate eu scelerisque felis imperdiet. Venenatis a
condimentum vitae sapien pellentesque habitant morbi. Penatibus
et magnis dis parturient montes nascetur ridiculus. Eros donec
ac odio tempor orci dapibus ultrices in iaculis. Massa eget
egestas purus viverra accumsan in. Ut lectus arcu bibendum at
varius. Ultricies tristique nulla aliquet enim. Ullamcorper
malesuada proin libero nunc consequat interdum. Leo in vitae
turpis massa sed elementum tempus. Faucibus nisl tincidunt eget
nullam non nisi est sit amet.
Purus sit amet luctus venenatis lectus magna fringilla urna
porttitor. Maecenas accumsan lacus vel facilisis volutpat est
velit egestas dui. In nulla posuere sollicitudin aliquam
ultrices sagittis orci. Vitae nunc sed velit dignissim sodales
ut eu. Adipiscing bibendum est ultricies integer quis auctor.
Tempus imperdiet nulla malesuada pellentesque. Dapibus ultrices
in iaculis nunc. Tortor id aliquet lectus proin nibh nisl
condimentum id venenatis. Pretium lectus quam id leo in vitae
turpis. Sagittis aliquam malesuada bibendum arcu vitae
elementum curabitur vitae nunc. In nulla posuere sollicitudin
aliquam ultrices sagittis. Ut lectus arcu bibendum at varius
vel pharetra. Fusce ut placerat orci nulla pellentesque
dignissim. Ac tortor vitae purus faucibus ornare suspendisse
sed nisi. Non consectetur a erat nam. Eget sit amet tellus cras.
Purus non enim praesent elementum facilisis leo vel fringilla.
Feugiat vivamus at augue eget arcu dictum varius duis. Nibh
nisl condimentum id venenatis. Feugiat nisl pretium fusce id.
Adipiscing commodo elit at imperdiet dui. Varius vel pharetra
vel turpis nunc eget lorem dolor sed. Nullam ac tortor vitae
purus. Nunc mattis enim ut tellus elementum sagittis vitae et.
Justo nec ultrices dui sapien. Tempus iaculis urna id volutpat
lacus laoreet.
Quam pellentesque nec nam aliquam sem et tortor consequat.
Scelerisque varius morbi enim nunc faucibus a pellentesque.
Arcu non odio euismod lacinia at quis. Vivamus arcu felis
bibendum ut tristique et egestas quis ipsum. Malesuada proin
libero nunc consequat interdum varius. Laoreet sit amet cursus
sit amet. Odio pellentesque diam volutpat commodo sed egestas
egestas fringilla. Massa placerat duis ultricies lacus sed
turpis tincidunt id. Ultricies mi eget mauris pharetra et
ultrices neque ornare aenean. Lacus vestibulum sed arcu non
odio euismod lacinia. Turpis egestas integer eget aliquet nibh.
Faucibus pulvinar elementum integer enim. At tempor commodo
ullamcorper a lacus vestibulum sed. Non pulvinar neque laoreet
suspendisse interdum consectetur. Cursus risus at ultrices mi
tempus imperdiet nulla malesuada pellentesque. At auctor urna
nunc id cursus metus aliquam. Elementum nisi quis eleifend quam
adipiscing. Gravida cum sociis natoque penatibus et magnis dis
parturient montes.
Aliquet bibendum enim facilisis gravida neque convallis. Tempor
nec feugiat nisl pretium. Nunc vel risus commodo viverra
maecenas accumsan lacus vel. Felis donec et odio pellentesque.
Pulvinar elementum integer enim neque volutpat ac tincidunt.
Mattis ullamcorper velit sed ullamcorper morbi tincidunt. Quis
imperdiet massa tincidunt nunc. Faucibus et molestie ac feugiat
sed lectus. Tortor aliquam nulla facilisi cras fermentum odio
eu feugiat pretium. Lorem ipsum dolor sit amet consectetur
adipiscing elit. Semper risus in hendrerit gravida rutrum
quisque non tellus. Diam sit amet nisl suscipit adipiscing
bibendum est.
:OUTPUT-FILTER
:EXPECTED
/*********************************************************************/
/* Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do */
/* eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit */
/* amet massa vitae tortor condimentum lacinia quis vel eros. */
/* Feugiat in ante metus dictum at tempor. Neque aliquam */
/* vestibulum morbi blandit cursus. Non pulvinar neque laoreet */
/* suspendisse interdum consectetur libero. Sit amet massa vitae */
/* tortor condimentum lacinia. Faucibus pulvinar elementum integer */
/* enim neque volutpat ac tincidunt vitae. Tortor dignissim */
/* convallis aenean et tortor at risus. Nunc sed blandit libero */
/* volutpat. Dolor magna eget est lorem. Aliquet nec ullamcorper */
/* sit amet risus nullam eget. Pellentesque elit eget gravida cum */
/* sociis natoque penatibus et. Elit scelerisque mauris */
/* pellentesque pulvinar pellentesque habitant morbi. Tincidunt */
/* eget nullam non nisi est sit. Eu non diam phasellus vestibulum */
/* lorem sed risus. Integer eget aliquet nibh praesent. */
/* */
/* Nascetur ridiculus mus mauris vitae ultricies leo integer */
/* malesuada. Nulla facilisi morbi tempus iaculis urna id volutpat */
/* lacus laoreet. Eu mi bibendum neque egestas. Arcu felis */
/* bibendum ut tristique et egestas quis ipsum suspendisse. Dolor */
/* sit amet consectetur adipiscing. Turpis massa sed elementum */
/* tempus egestas sed sed risus. Est pellentesque elit ullamcorper */
/* dignissim cras tincidunt lobortis. Arcu risus quis varius quam */
/* quisque id diam vel. Ornare aenean euismod elementum nisi quis */
/* eleifend. Duis at consectetur lorem donec massa sapien faucibus */
/* et molestie. Lorem ipsum dolor sit amet consectetur adipiscing */
/* elit. Feugiat nibh sed pulvinar proin gravida hendrerit. Amet */
/* mauris commodo quis imperdiet massa tincidunt nunc. Nisl purus */
/* in mollis nunc sed. Nec ultrices dui sapien eget mi. Sagittis */
/* eu volutpat odio facilisis mauris sit. */
/* */
/* In nulla posuere sollicitudin aliquam ultrices sagittis orci a. */
/* At in tellus integer feugiat scelerisque varius. Mauris */
/* pellentesque pulvinar pellentesque habitant morbi tristique */
/* senectus. Tortor dignissim convallis aenean et tortor at risus. */
/* Sed turpis tincidunt id aliquet risus. Odio eu feugiat pretium */
/* nibh. Est pellentesque elit ullamcorper dignissim cras */
/* tincidunt lobortis feugiat vivamus. Vel pretium lectus quam id */
/* leo in. Nec ullamcorper sit amet risus nullam eget felis eget. */
/* In hac habitasse platea dictumst quisque sagittis. Augue lacus */
/* viverra vitae congue eu. Eu tincidunt tortor aliquam nulla */
/* facilisi cras fermentum. */
/* */
/* A pellentesque sit amet porttitor. Fringilla phasellus faucibus */
/* scelerisque eleifend donec. Pulvinar sapien et ligula */
/* ullamcorper malesuada proin libero nunc. Cursus vitae congue */
/* mauris rhoncus aenean vel elit scelerisque mauris. Elementum eu */
/* facilisis sed odio. Est ultricies integer quis auctor elit sed */
/* vulputate mi sit. Congue quisque egestas diam in arcu cursus */
/* euismod quis. Amet mauris commodo quis imperdiet massa */
/* tincidunt nunc pulvinar. Sit amet consectetur adipiscing elit */
/* pellentesque habitant morbi. Laoreet non curabitur gravida arcu */
/* ac tortor dignissim convallis aenean. Amet dictum sit amet */
/* justo donec enim diam. Sagittis aliquam malesuada bibendum arcu */
/* vitae elementum curabitur vitae nunc. Porta lorem mollis */
/* aliquam ut porttitor. At in tellus integer feugiat scelerisque. */
/* Viverra maecenas accumsan lacus vel facilisis. Suscipit tellus */
/* mauris a diam. Mi sit amet mauris commodo. Ut eu sem integer */
/* vitae justo eget. Senectus et netus et malesuada fames ac turpis. */
/* */
/* Euismod elementum nisi quis eleifend quam. Auctor neque vitae */
/* tempus quam pellentesque nec nam aliquam sem. Ultricies mi eget */
/* mauris pharetra et ultrices neque ornare. Vel turpis nunc eget */
/* lorem dolor sed viverra ipsum nunc. Nibh praesent tristique */
/* magna sit amet purus gravida quis. Suspendisse in est ante in */
/* nibh mauris cursus mattis. Rutrum quisque non tellus orci ac */
/* auctor augue mauris. Elit at imperdiet dui accumsan sit. Eu */
/* consequat ac felis donec et. Integer malesuada nunc vel risus */
/* commodo. Aenean pharetra magna ac placerat vestibulum lectus. */
/* Lacus viverra vitae congue eu consequat ac felis. Risus viverra */
/* adipiscing at in. Dolor sit amet consectetur adipiscing elit ut */
/* aliquam. Scelerisque mauris pellentesque pulvinar pellentesque */
/* habitant morbi. Pulvinar etiam non quam lacus suspendisse */
/* faucibus. Quam lacus suspendisse faucibus interdum posuere. */
/* Imperdiet nulla malesuada pellentesque elit eget gravida cum */
/* sociis. Pretium aenean pharetra magna ac placerat. Turpis nunc */
/* eget lorem dolor sed viverra. */
/* */
/* Tellus at urna condimentum mattis pellentesque id nibh tortor */
/* id. Est sit amet facilisis magna etiam tempor orci. Est lorem */
/* ipsum dolor sit amet. Quis viverra nibh cras pulvinar mattis */
/* nunc sed. Magnis dis parturient montes nascetur ridiculus mus */
/* mauris. Justo eget magna fermentum iaculis eu non diam */
/* phasellus vestibulum. Ipsum dolor sit amet consectetur */
/* adipiscing elit ut aliquam. Mi proin sed libero enim sed. */
/* Quisque egestas diam in arcu. Proin libero nunc consequat */
/* interdum varius sit amet. Turpis massa tincidunt dui ut. Erat */
/* nam at lectus urna duis. Tristique senectus et netus et */
/* malesuada fames ac turpis. Fermentum posuere urna nec */
/* tincidunt. Risus nullam eget felis eget. Odio facilisis mauris */
/* sit amet. Adipiscing elit pellentesque habitant morbi tristique */
/* senectus et netus. In hac habitasse platea dictumst vestibulum. */
/* Sit amet volutpat consequat mauris nunc congue nisi vitae. */
/* */
/* Lacus luctus accumsan tortor posuere ac ut consequat semper. In */
/* ornare quam viverra orci sagittis eu volutpat odio facilisis. */
/* Lobortis scelerisque fermentum dui faucibus in ornare. */
/* Penatibus et magnis dis parturient. Consectetur adipiscing elit */
/* duis tristique. Amet dictum sit amet justo donec enim diam. */
/* Sapien faucibus et molestie ac. Amet volutpat consequat mauris */
/* nunc. Tortor condimentum lacinia quis vel eros donec. Commodo */
/* sed egestas egestas fringilla. Pulvinar sapien et ligula */
/* ullamcorper malesuada proin. Diam volutpat commodo sed egestas */
/* egestas fringilla phasellus. */
/* */
/* Ut faucibus pulvinar elementum integer enim neque volutpat ac */
/* tincidunt. Egestas tellus rutrum tellus pellentesque eu */
/* tincidunt tortor aliquam nulla. Quisque id diam vel quam */
/* elementum. Non sodales neque sodales ut etiam. Consectetur a */
/* erat nam at lectus urna duis convallis. Felis imperdiet proin */
/* fermentum leo vel orci porta. Tellus in metus vulputate eu */
/* scelerisque felis. Pharetra convallis posuere morbi leo urna */
/* molestie at. Auctor augue mauris augue neque gravida. In */
/* iaculis nunc sed augue lacus viverra vitae congue. Senectus et */
/* netus et malesuada fames ac turpis egestas integer. Non nisi */
/* est sit amet facilisis magna etiam tempor. Blandit cursus risus */
/* at ultrices mi tempus imperdiet. Enim ut sem viverra aliquet */
/* eget sit amet tellus cras. Ultrices mi tempus imperdiet nulla */
/* malesuada pellentesque elit eget. Justo laoreet sit amet */
/* cursus. Amet consectetur adipiscing elit pellentesque. Pulvinar */
/* sapien et ligula ullamcorper malesuada proin libero nunc */
/* consequat. */
/* */
/* Sem fringilla ut morbi tincidunt augue interdum. Tempor orci eu */
/* lobortis elementum nibh. Elementum eu facilisis sed odio morbi */
/* quis commodo odio aenean. Vitae nunc sed velit dignissim */
/* sodales ut eu. Felis eget nunc lobortis mattis aliquam */
/* faucibus. Viverra tellus in hac habitasse. Tristique senectus */
/* et netus et malesuada fames ac turpis. Nisl rhoncus mattis */
/* rhoncus urna neque viverra justo. Praesent elementum facilisis */
/* leo vel fringilla. Pellentesque adipiscing commodo elit at. */
/* Libero enim sed faucibus turpis in eu mi bibendum. Faucibus */
/* nisl tincidunt eget nullam non nisi est sit amet. Bibendum est */
/* ultricies integer quis. Mattis enim ut tellus elementum */
/* sagittis vitae et leo. Vitae aliquet nec ullamcorper sit amet */
/* risus nullam eget. Vestibulum sed arcu non odio euismod lacinia */
/* at. Enim neque volutpat ac tincidunt. Scelerisque in dictum non */
/* consectetur. Rhoncus dolor purus non enim praesent. Convallis */
/* posuere morbi leo urna molestie at elementum eu. */
/* */
/* In iaculis nunc sed augue. Massa massa ultricies mi quis */
/* hendrerit dolor. Est velit egestas dui id ornare arcu odio ut */
/* sem. Ac turpis egestas integer eget aliquet nibh praesent */
/* tristique magna. Massa enim nec dui nunc mattis. Diam phasellus */
/* vestibulum lorem sed risus ultricies. Vivamus at augue eget */
/* arcu. Ullamcorper velit sed ullamcorper morbi tincidunt ornare */
/* massa. Aliquam sem fringilla ut morbi tincidunt augue. Tellus */
/* in metus vulputate eu scelerisque felis imperdiet. Venenatis a */
/* condimentum vitae sapien pellentesque habitant morbi. Penatibus */
/* et magnis dis parturient montes nascetur ridiculus. Eros donec */
/* ac odio tempor orci dapibus ultrices in iaculis. Massa eget */
/* egestas purus viverra accumsan in. Ut lectus arcu bibendum at */
/* varius. Ultricies tristique nulla aliquet enim. Ullamcorper */
/* malesuada proin libero nunc consequat interdum. Leo in vitae */
/* turpis massa sed elementum tempus. Faucibus nisl tincidunt eget */
/* nullam non nisi est sit amet. */
/* */
/* Purus sit amet luctus venenatis lectus magna fringilla urna */
/* porttitor. Maecenas accumsan lacus vel facilisis volutpat est */
/* velit egestas dui. In nulla posuere sollicitudin aliquam */
/* ultrices sagittis orci. Vitae nunc sed velit dignissim sodales */
/* ut eu. Adipiscing bibendum est ultricies integer quis auctor. */
/* Tempus imperdiet nulla malesuada pellentesque. Dapibus ultrices */
/* in iaculis nunc. Tortor id aliquet lectus proin nibh nisl */
/* condimentum id venenatis. Pretium lectus quam id leo in vitae */
/* turpis. Sagittis aliquam malesuada bibendum arcu vitae */
/* elementum curabitur vitae nunc. In nulla posuere sollicitudin */
/* aliquam ultrices sagittis. Ut lectus arcu bibendum at varius */
/* vel pharetra. Fusce ut placerat orci nulla pellentesque */
/* dignissim. Ac tortor vitae purus faucibus ornare suspendisse */
/* sed nisi. Non consectetur a erat nam. Eget sit amet tellus cras. */
/* */
/* Purus non enim praesent elementum facilisis leo vel fringilla. */
/* Feugiat vivamus at augue eget arcu dictum varius duis. Nibh */
/* nisl condimentum id venenatis. Feugiat nisl pretium fusce id. */
/* Adipiscing commodo elit at imperdiet dui. Varius vel pharetra */
/* vel turpis nunc eget lorem dolor sed. Nullam ac tortor vitae */
/* purus. Nunc mattis enim ut tellus elementum sagittis vitae et. */
/* Justo nec ultrices dui sapien. Tempus iaculis urna id volutpat */
/* lacus laoreet. */
/* */
/* Quam pellentesque nec nam aliquam sem et tortor consequat. */
/* Scelerisque varius morbi enim nunc faucibus a pellentesque. */
/* Arcu non odio euismod lacinia at quis. Vivamus arcu felis */
/* bibendum ut tristique et egestas quis ipsum. Malesuada proin */
/* libero nunc consequat interdum varius. Laoreet sit amet cursus */
/* sit amet. Odio pellentesque diam volutpat commodo sed egestas */
/* egestas fringilla. Massa placerat duis ultricies lacus sed */
/* turpis tincidunt id. Ultricies mi eget mauris pharetra et */
/* ultrices neque ornare aenean. Lacus vestibulum sed arcu non */
/* odio euismod lacinia. Turpis egestas integer eget aliquet nibh. */
/* Faucibus pulvinar elementum integer enim. At tempor commodo */
/* ullamcorper a lacus vestibulum sed. Non pulvinar neque laoreet */
/* suspendisse interdum consectetur. Cursus risus at ultrices mi */
/* tempus imperdiet nulla malesuada pellentesque. At auctor urna */
/* nunc id cursus metus aliquam. Elementum nisi quis eleifend quam */
/* adipiscing. Gravida cum sociis natoque penatibus et magnis dis */
/* parturient montes. */
/* */
/* Aliquet bibendum enim facilisis gravida neque convallis. Tempor */
/* nec feugiat nisl pretium. Nunc vel risus commodo viverra */
/* maecenas accumsan lacus vel. Felis donec et odio pellentesque. */
/* Pulvinar elementum integer enim neque volutpat ac tincidunt. */
/* Mattis ullamcorper velit sed ullamcorper morbi tincidunt. Quis */
/* imperdiet massa tincidunt nunc. Faucibus et molestie ac feugiat */
/* sed lectus. Tortor aliquam nulla facilisi cras fermentum odio */
/* eu feugiat pretium. Lorem ipsum dolor sit amet consectetur */
/* adipiscing elit. Semper risus in hendrerit gravida rutrum */
/* quisque non tellus. Diam sit amet nisl suscipit adipiscing */
/* bibendum est. */
/*********************************************************************/
:EOF

13
test/116_lots_of_tabs.txt Normal file
View File

@ -0,0 +1,13 @@
:DESC
Test that an ultra-long line consisting almost only of tabs is handled correctly. The line consists of 510 tabs and
two 'x' at the ends, which makes for 4081 columns in the result. Because of LINE_MAX_BYTES from boxes.h.in at 4096,
we should get a correct box. This is not 100% precise at the edges (don't go to 4096 exactly), which is fine.
:ARGS
:INPUT
x x
:OUTPUT-FILTER
:EXPECTED
/*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* x x */
/*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
:EOF

View File

@ -0,0 +1,40 @@
:DESC
This test case checks that a broken box with unicode and ansi sequences can be properly mended.
:ARGS
-d diamonds -ac -m
:INPUT
/\ /\ /\ /\
/\//\\/\ /\//\\/\ /\//\\/\ /\//\\/\
/\//\\\///\\/\//\\\///\\/\//\\\///\\/\//\\\///\\/\
//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\\//\/\\///\\
\\//\/ \/\\//
\/ \/
/\ 申提小作氷食京豆贈画容平上護整的京。 /\
//\\ 筑にじルげ物綱て流43写タフウ
\\// Y4 n0w 54y, (pdf) 1nDeX3D \\//
\/ Lorem ipsum. \/
/\ /\
//\\/\ /\//\\
\\///\\/\//\\\///\\/\//\\\///\\/\//\\\///\\/\//\\\//
\/\\///\\\//\/\\///\\\//\/\\///\\\//\/\\///\\\//\/
\/\\//\/ \/\\//\/ \/\\//\/ \/\\//\/
\/ \/ \/ \/
:OUTPUT-FILTER
:EXPECTED
/\ /\ /\ /\
/\//\\/\ /\//\\/\ /\//\\/\ /\//\\/\
/\//\\\///\\/\//\\\///\\/\//\\\///\\/\//\\\///\\/\
//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\\//\/\\///\\
\\//\/ \/\\//
\/ \/
/\ 申提小作氷食京豆贈画容平上護整的京。 /\
//\\ 筑にじルげ物綱て流43写タフウ //\\
\\// Y4 n0w 54y, (pdf) 1nDeX3D \\//
\/ Lorem ipsum. \/
/\ /\
//\\/\ /\//\\
\\///\\/\//\\\///\\/\//\\\///\\/\//\\\///\\/\//\\\//
\/\\///\\\//\/\\///\\\//\/\\///\\\//\/\\///\\\//\/
\/\\//\/ \/\\//\/ \/\\//\/ \/\\//\/
\/ \/ \/ \/
:EOF

View File

@ -0,0 +1,31 @@
:DESC
Center align colored unicode text.
:ARGS
-d unicornsay -ac
:INPUT
         試
     常盤
   運作能
   申見売映
   海棋事行変
   föóbéç¿
:OUTPUT-FILTER
:EXPECTED
______________
/ \
|     試 |
|   常盤 |
| 運作能 |
| 申見売映 |
| 海棋事行変 |
| föóbéç¿ |
\________ __'\
|/ \\
\ \\ .
|\\/|
/ " '\
. . .
/ ) |
' _.' |
'-'/ \
:EOF

View File

@ -0,0 +1,31 @@
:DESC
Right align colored unicode text.
:ARGS
-d unicornsay -ar
:INPUT
         試
     常盤
   運作能
   申見売映
   海棋事行変
   föóbéç¿
:OUTPUT-FILTER
:EXPECTED
______________
/ \
|       試 |
|   常盤 |
| 運作能 |
| 申見売映 |
| 海棋事行変 |
| föóbéç¿ |
\________ __'\
|/ \\
\ \\ .
|\\/|
/ " '\
. . .
/ ) |
' _.' |
'-'/ \
:EOF