util: Migrated nontrivial from text

This commit is contained in:
Paul Beckingham 2016-12-11 17:34:50 -05:00
parent 9ae171f57c
commit 14e3038571
7 changed files with 27 additions and 27 deletions

View file

@ -44,7 +44,7 @@
#include <Timer.h>
#include <format.h>
#include <shared.h>
#include <text.h>
#include <util.h>
#include <i18n.h>
extern Context context;

View file

@ -52,18 +52,6 @@ const char* optionalBlankLine ()
return context.verbose ("blank") ? newline : noline;
}
////////////////////////////////////////////////////////////////////////////////
bool nontrivial (const std::string& input)
{
std::string::size_type i = 0;
int character;
while ((character = utf8_next_char (input, i)))
if (! Lexer::isWhitespace (character))
return true;
return false;
}
////////////////////////////////////////////////////////////////////////////////
// Return the length, in characters, of the input, subtracting color control
// codes.

View file

@ -34,7 +34,6 @@
// text.cpp, Non-UTF-8 aware.
const char* optionalBlankLine ();
bool nontrivial (const std::string&);
int strippedLength (const std::string&);
#endif

View file

@ -316,3 +316,15 @@ const std::string obfuscateText (const std::string& input)
}
////////////////////////////////////////////////////////////////////////////////
bool nontrivial (const std::string& input)
{
std::string::size_type i = 0;
int character;
while ((character = utf8_next_char (input, i)))
if (! Lexer::isWhitespace (character))
return true;
return false;
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -62,6 +62,7 @@ const std::vector <std::string> extractParents (
std::string osName ();
const std::string obfuscateText (const std::string&);
bool nontrivial (const std::string&);
#endif
////////////////////////////////////////////////////////////////////////////////

View file

@ -37,18 +37,7 @@ Context context;
////////////////////////////////////////////////////////////////////////////////
int main (int, char**)
{
UnitTest t (14);
// bool nontrivial (const std::string&);
t.notok (nontrivial (""), "nontrivial '' -> false");
t.notok (nontrivial (" "), "nontrivial ' ' -> false");
t.notok (nontrivial ("\t\t"), "nontrivial '\\t\\t' -> false");
t.notok (nontrivial (" \t \t"), "nontrivial ' \\t \\t' -> false");
t.ok (nontrivial ("a"), "nontrivial 'a' -> true");
t.ok (nontrivial (" a"), "nontrivial ' a' -> true");
t.ok (nontrivial ("a "), "nontrivial 'a ' -> true");
t.ok (nontrivial (" \t\ta"), "nontrivial ' \\t\\ta' -> true");
t.ok (nontrivial ("a\t\t "), "nontrivial 'a\\t\\t ' -> true");
UnitTest t (5);
// int strippedLength (const std::string&);
t.is (strippedLength (std::string ("")), 0, "strippedLength -> 0");

View file

@ -36,7 +36,7 @@ Context context;
////////////////////////////////////////////////////////////////////////////////
int main (int, char**)
{
UnitTest t (22);
UnitTest t (19);
// Ensure environment has no influence.
unsetenv ("TASKDATA");
@ -75,6 +75,17 @@ int main (int, char**)
t.is (indentProject ("one.two"), " two", "indentProject 'one.two' -> ' two'");
t.is (indentProject ("one.two.three"), " three", "indentProject 'one.two.three' -> ' three'");
// bool nontrivial (const std::string&);
t.notok (nontrivial (""), "nontrivial '' -> false");
t.notok (nontrivial (" "), "nontrivial ' ' -> false");
t.notok (nontrivial ("\t\t"), "nontrivial '\\t\\t' -> false");
t.notok (nontrivial (" \t \t"), "nontrivial ' \\t \\t' -> false");
t.ok (nontrivial ("a"), "nontrivial 'a' -> true");
t.ok (nontrivial (" a"), "nontrivial ' a' -> true");
t.ok (nontrivial ("a "), "nontrivial 'a ' -> true");
t.ok (nontrivial (" \t\ta"), "nontrivial ' \\t\\ta' -> true");
t.ok (nontrivial ("a\t\t "), "nontrivial 'a\\t\\t ' -> true");
return 0;
}