1
0
forked from Alepha/Alepha

Here's a bunch more table tests for word wrap.

Some fail, as this impl is slightly different to the one that these
tests were created for.

I'll have to decide what the right answers are.
This commit is contained in:
2023-10-12 21:19:09 -04:00
parent 621a703302
commit 38411e3ea6

View File

@ -18,4 +18,108 @@ static auto init= Alepha::Utility::enroll <=[]
{
{ "Three word with break after first?", { "Goodbye cruel world!", 12, 0 }, "Goodbye \ncruel world!" },
};
"word_wrap.noindent.single_word"_test <=TableTest< Alepha::wordWrap >::Cases
{
{ "Simple", { "Hello", 100, 0 }, "Hello" },
{ "space should be kept", { "Hello ", 10, 0 }, "Hello " },
{ "space should be dropped", { "Hello ", 5, 0 }, "Hello" },
{ "all spaces should be dropped", { "Hello ", 5, 0 }, "Hello" },
{ "two spaces should be kept", { "Hello ", 7, 0 }, "Hello " },
{ "too narrow, forces wrap anyway", { "Hello", 4, 0 }, "\nHello" },
{ "too narrow, forces wrap anyway, drops space", { "Hello ", 4, 0 }, "\nHello" },
{ "too narrow, forces wrap anyway, drops spaces", { "Hello ", 4, 0 }, "\nHello" },
};
const std::string helloWorld= "Hello World";
"word_wrap.noindent.two_words"_test <=TableTest< Alepha::wordWrap >::Cases
{
{ "Simple", { helloWorld, 100, 0 }, helloWorld },
{ "Trailing space should be kept", { helloWorld +" ", 100, 0 }, helloWorld + " " },
{ "Trailing spaces should be kept", { helloWorld + " ", 100, 0 }, helloWorld + " " },
{ "Trailing spaces should be dropped", { helloWorld + " ", helloWorld.size(), 0 }, helloWorld },
{ "All but 2 trailing spaces dropped", { helloWorld + " ", helloWorld.size() + 2, 0 },
helloWorld + " "},
{ "Split line", { helloWorld, 8, 0 }, "Hello \nWorld" }, // TODO: Should we swallow trailing spaces?
};
"word_wrap.noindent.other_cases"_test <=TableTest< Alepha::wordWrap >::Cases
{
{ "Three words", { "Goodbye cruel world!", 12, 0 }, "Goodbye \ncruel world!" },
{ "Three longer words", { "Goodbye terrible world!", 13, 0 }, "Goodbye \nterrible \nworld!" },
{ "narrow terminal, complex text: Hamlet's \"To Be or Not To Be\"",
{
"To be, or not to be: "
"that is the question: "
"Whether 'tis nobler in the mind to suffer "
"The slings and arrows of outrageous fortune, "
"Or to take arms against a sea of troubles, "
"And by opposing end them? "
"To die: to sleep; "
"No more; and by a sleep to say we end "
"The heart-ache and the thousand natural shocks "
"That flesh is heir to, 'tis a consummation "
"Devoutly to be wish'd. To die, to sleep; "
"To sleep: perchance to dream: ay, there's the rub;",
20, 0
},
"To be, or not to be:\n"
"that is the \n"
"question: Whether \n"
"'tis nobler in the \n"
"mind to suffer The \n"
"slings and arrows of\n"
"outrageous fortune, \n"
"Or to take arms \n"
"against a sea of \n"
"troubles, And by \n"
"opposing end them? \n"
"To die: to sleep; No\n"
"more; and by a sleep\n"
"to say we end The \n"
"heart-ache and the \n"
"thousand natural \n"
"shocks That flesh is\n"
"heir to, 'tis a \n"
"consummation \n"
"Devoutly to be \n"
"wish'd. To die, to \n"
"sleep; To sleep: \n"
"perchance to dream: \n"
"ay, there's the rub;"
},
{ "wider terminal, complex text: Hamlet's \"To Be or Not To Be\"",
{
"To be, or not to be: "
"that is the question: "
"Whether 'tis nobler in the mind to suffer "
"The slings and arrows of outrageous fortune, "
"Or to take arms against a sea of troubles, "
"And by opposing end them? "
"To die: to sleep; "
"No more; and by a sleep to say we end "
"The heart-ache and the thousand natural shocks "
"That flesh is heir to, 'tis a consummation "
"Devoutly to be wish'd. To die, to sleep; "
"To sleep: perchance to dream: ay, there's the rub;",
80, 0
},
"To be, or not to be: that is the question: Whether 'tis nobler in the mind to \n"
"suffer The slings and arrows of outrageous fortune, Or to take arms against a \n"
"sea of troubles, And by opposing end them? To die: to sleep; No more; and by a \n"
"sleep to say we end The heart-ache and the thousand natural shocks That flesh is\n"
"heir to, 'tis a consummation Devoutly to be wish'd. To die, to sleep; To sleep:\n"
"perchance to dream: ay, there's the rub;"
},
};
"word_wrap.indent"_test <=TableTest< Alepha::wordWrap >::Cases
{
{ "Two word indent, simple", { "Hello World!", 8, 2 }, "Hello \n World!" },
{ "Three word indent, simple", { "Hello Wonderful World!", 16, 4 }, "Hello Wonderful \n World!" },
{ "Three word indent, corner case", { "Hello Wonderful World!", 15, 4 }, "Hello Wonderful\n World!" },
{ "Two word indent, extra newline", { "Hello\n\nWorld!", 8, 2 }, "Hello\n \n World!" },
{ "Two word indent, one newline", { "Hello\nWorld!", 8, 2 }, "Hello\n World!" },
};
};