Beispiel #1
0
int main (int argc, char** argv)
{
  UnitTest t (17);

  // Ensure environment has no influence.
  unsetenv ("TASKDATA");
  unsetenv ("TASKRC");

  std::string ascii_text      = "This is a test";
  std::string utf8_text       = "más sábado miércoles";
  std::string utf8_wide_text  = "改变各种颜色";

  std::string ascii_text_color      = "This is a test";
  std::string utf8_text_color       = "más sábado miércoles";
  std::string utf8_wide_text_color  = "改变各种颜色";

  // unsigned int utf8_codepoint (const std::string&);
  t.is ((int) utf8_codepoint ("\\u0020"), 32, "\\u0020 --> ' '");
  t.is ((int) utf8_codepoint ("U+0020"),  32, "U+0020 --> ' '");

  // TODO unsigned int utf8_next_char (const std::string&, std::string::size_type&);
  // TODO std::string utf8_character (unsigned int);
  // TODO int utf8_sequence (unsigned int);

  // unsigned int utf8_length (const std::string&);
  t.is ((int) utf8_length (ascii_text),     14, "ASCII utf8_length");
  t.is ((int) utf8_length (utf8_text),      20, "UTF8 utf8_length");
  t.is ((int) utf8_length (utf8_wide_text),  6, "UTF8 wide utf8_length");

  // unsigned int utf8_width (const std::string&);
  t.is ((int) utf8_width (ascii_text),     14, "ASCII utf8_width");
  t.is ((int) utf8_width (utf8_text),      20, "UTF8 utf8_width");
  t.is ((int) utf8_width (utf8_wide_text), 12, "UTF8 wide utf8_width");

  // unsigned int utf8_text_length (const std::string&);
  t.is ((int) utf8_text_length (ascii_text_color),     14, "ASCII utf8_text_length");
  t.is ((int) utf8_text_length (utf8_text_color),      20, "UTF8 utf8_text_length");
  t.is ((int) utf8_text_length (utf8_wide_text_color),  6, "UTF8 wide utf8_text_length");

  // unsigned int utf8_text_width (const std::string&);
  t.is ((int) utf8_text_width (ascii_text_color),     14, "ASCII utf8_text_width");
  t.is ((int) utf8_text_width (utf8_text_color),      20, "UTF8 utf8_text_width");
  t.is ((int) utf8_text_width (utf8_wide_text_color), 12, "UTF8 wide utf8_text_width");

  // const std::string utf8_substr (const std::string&, unsigned int, unsigned int length = 0);
  t.is (utf8_substr (ascii_text, 0, 2),      "Th", "ASCII utf8_substr");
  t.is (utf8_substr (utf8_text, 0, 2),       "má", "UTF8 utf8_substr");
  t.is (utf8_substr (utf8_wide_text, 0, 2),  "改变", "UTF8 wide utf8_substr");

  return 0;
}
Beispiel #2
0
std::string rightJustify (const std::string& input, const int width)
{
  unsigned int len = utf8_text_width (input);
  return (((unsigned int) width > len)
           ? std::string (width - len, ' ')
           : "")
         + input;
}
Beispiel #3
0
std::string rightJustify (const std::string& input, const int width)
{
  return std::string (width - utf8_text_width (input), ' ') + input;
}
Beispiel #4
0
std::string leftJustify (const std::string& input, const int width)
{
  return input + std::string (width - utf8_text_width (input), ' ');
}