Go to the documentation of this file.00001 #include <boost/test/auto_unit_test.hpp>
00002
00003 #include "testsuite.hh"
00004 #include <utilmm/auto_flag.hh>
00005 #include <utilmm/stringtools.hh>
00006 using namespace utilmm;
00007
00008 BOOST_AUTO_TEST_CASE( test_autoflag )
00009 {
00010 bool flag = false;
00011
00012 { auto_flag<bool> guard(flag, true, true);
00013 BOOST_REQUIRE( flag );
00014 }
00015 BOOST_REQUIRE( !flag );
00016
00017 { auto_flag<bool> guard(flag, false, true);
00018 BOOST_REQUIRE( !flag );
00019 }
00020 BOOST_REQUIRE( !flag );
00021
00022 { auto_flag<bool> guard(flag, false, false);
00023 BOOST_REQUIRE( !flag );
00024 }
00025 BOOST_REQUIRE( flag );
00026
00027 int field = 1;
00028 { auto_flag<int> guard(field, 2, true, true);
00029 BOOST_REQUIRE(field & 2 == 2);
00030 }
00031 BOOST_REQUIRE(field == 1);
00032
00033 { auto_flag<int> guard(field, 1, false, true);
00034 BOOST_REQUIRE(field == 0);
00035 }
00036 BOOST_REQUIRE(field == 1);
00037
00038 { auto_flag<int> guard(field, 2, false, false);
00039 BOOST_REQUIRE(field == 1);
00040 }
00041 BOOST_REQUIRE(field == 3);
00042 }
00043
00044 BOOST_AUTO_TEST_CASE( test_stringlist )
00045 {
00046 using std::string;
00047
00048 {
00049 string a = "a b c";
00050 stringlist l = split(a);
00051
00052 BOOST_REQUIRE_EQUAL(3U, l.size());
00053 BOOST_REQUIRE_EQUAL("a", l.front());
00054 BOOST_REQUIRE_EQUAL("c", l.back());
00055 BOOST_REQUIRE_EQUAL("a b c", join(l));
00056 }
00057
00058 {
00059 string id = "a_b_c";
00060 stringlist l = split(id, "_");
00061 BOOST_REQUIRE_EQUAL(3U, l.size());
00062 BOOST_REQUIRE_EQUAL("abc", join(l, ""));
00063 }
00064
00065 {
00066 string id = "a_b c";
00067 BOOST_REQUIRE_EQUAL("A_B C", upcase(id));
00068 }
00069
00070 {
00071 string match = "do begins with bla";
00072 string nomatch = "does not begins with bla";
00073 string seed = "do begins";
00074 BOOST_REQUIRE(starts_with(match, seed));
00075 BOOST_REQUIRE(!starts_with(nomatch, seed));
00076 }
00077 }
00078
00079 BOOST_AUTO_TEST_CASE( test_clean_path )
00080 {
00081 using std::string;
00082 using boost::filesystem::path;
00083 path p = clean_path("a/../b");
00084 BOOST_REQUIRE_EQUAL("b", path_to_string(p));
00085 p = clean_path("a//b");
00086 BOOST_REQUIRE_EQUAL("a/b", path_to_string(p));
00087 p = clean_path("a/./b");
00088 BOOST_REQUIRE_EQUAL("a/b", path_to_string(p));
00089 p = clean_path("//a/./b//");
00090 BOOST_REQUIRE_EQUAL("/a/b/.", path_to_string(p));
00091 }