summaryrefslogtreecommitdiffstats
path: root/unicode/linebreaktest.C
diff options
context:
space:
mode:
authorSam Varshavchik2014-01-16 18:05:38 -0500
committerSam Varshavchik2014-01-16 18:06:02 -0500
commitb84d8ff82f5e2f5f81690913701ab54d12a1a22e (patch)
treeb4623d62b3657d501c7732a4d3c99218225a945a /unicode/linebreaktest.C
parent4be24d5017d0563ec78bd83fb8fcd8528cbd7b6b (diff)
downloadcourier-libs-b84d8ff82f5e2f5f81690913701ab54d12a1a22e.tar.bz2
unicode: cleanup unicode::iconvert::tou API
Diffstat (limited to 'unicode/linebreaktest.C')
-rw-r--r--unicode/linebreaktest.C24
1 files changed, 18 insertions, 6 deletions
diff --git a/unicode/linebreaktest.C b/unicode/linebreaktest.C
index d7b93c4..0d1dffe 100644
--- a/unicode/linebreaktest.C
+++ b/unicode/linebreaktest.C
@@ -179,13 +179,18 @@ int main(int argc, char **argv)
std::string convteststr="0000000000000000000000000000000\xe3\x82\xa2";
- std::vector<unicode_char> uc;
+ std::pair<std::vector<unicode_char>, bool> uc;
- unicode::iconvert::tou
- ::convert(convteststr, "utf-8", uc);
+ uc=unicode::iconvert::tou::convert(convteststr, "utf-8");
- std::vector<unicode_char>::iterator e(uc.end()),
- b(std::find_if(uc.begin(), e,
+ if (uc.second)
+ {
+ std::cerr << "Valid UTF-8 string is invalid" << std::endl;
+ exit(1);
+ }
+
+ std::vector<unicode_char>::iterator e(uc.first.end()),
+ b(std::find_if(uc.first.begin(), e,
std::not1(std::bind2nd(std::equal_to<unicode_char>
(),
unicode_char('0')))));
@@ -197,12 +202,19 @@ int main(int argc, char **argv)
exit(1);
}
- if (unicode::iconvert::fromu::convert(uc, "utf-8") != convteststr)
+ if (unicode::iconvert::fromu::convert(uc.first, "utf-8") != convteststr)
{
std::cerr << "unicode::iconvert::fromu::convert failed"
<< std::endl;
exit(1);
}
+ uc=unicode::iconvert::tou::convert("\xE3", "utf-8");
+
+ if (!uc.second)
+ {
+ std::cerr << "Invalid UTF-8 string is valid" << std::endl;
+ exit(1);
+ }
return 0;
}