diff --git a/word_wrap.test/0.cc b/word_wrap.test/0.cc index 00d4518..bc9db65 100644 --- a/word_wrap.test/0.cc +++ b/word_wrap.test/0.cc @@ -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!" }, + }; };