} // eo JoinStringSet
+BOOST_AUTO_TEST_CASE(JoinStringIterSet_Default)
+{ /* default delimiter is newline */
+ std::set< std::string > parts;
+
+ parts.insert ("foo");
+ parts.insert ("bar");
+ parts.insert ("baz");
+
+ BOOST_CHECK_EQUAL(join_string (parts.begin (), parts.end ()), "bar\nbaz\nfoo");
+ BOOST_CHECK_EQUAL(join_string (parts ), "bar\nbaz\nfoo");
+
+} // eo JoinStringSet
+
+
+BOOST_AUTO_TEST_CASE(JoinStringArray_Empty)
+{
+ const char *const parts [] = { NULL };
+
+ BOOST_CHECK_EQUAL(join_string(&parts [0], &parts [0], "/"), "");
+ BOOST_CHECK_EQUAL(join_string(parts , "/"), "");
+
+ BOOST_CHECK_EQUAL(join_string(&parts [0], &parts [0]), "");
+ BOOST_CHECK_EQUAL(join_string(parts ), "");
+
+} // eo JoinStringSet
+
+BOOST_AUTO_TEST_CASE(JoinStringArray_One)
+{
+ const char *const parts [] = { "one", NULL };
+
+ BOOST_CHECK_EQUAL(join_string(&parts [0], &parts [1], "/"), "one");
+ BOOST_CHECK_EQUAL(join_string(parts , "/"), "one");
+
+ BOOST_CHECK_EQUAL(join_string(&parts [0], &parts [1]), "one");
+ BOOST_CHECK_EQUAL(join_string(parts ), "one");
+
+} // eo JoinStringSet
+
+BOOST_AUTO_TEST_CASE(JoinStringArray_Many)
+{
+ const char *const parts [5] = { "one", "two", "three", "many", NULL };
+
+ BOOST_CHECK_EQUAL(join_string(&parts [0], &parts [4], "/"), "one/two/three/many");
+ BOOST_CHECK_EQUAL(join_string(parts , "/"), "one/two/three/many");
+
+ BOOST_CHECK_EQUAL(join_string(&parts [0], &parts [4]), "one\ntwo\nthree\nmany");
+ BOOST_CHECK_EQUAL(join_string(parts ), "one\ntwo\nthree\nmany");
+
+} // eo JoinStringSet
+
+
BOOST_AUTO_TEST_CASE(ConversionStringInt)
{
std::string s1("24");