Author: mlandres
Date: Wed Oct 22 12:07:10 2008
New Revision: 11437
URL: http://svn.opensuse.org/viewcvs/zypp?rev=11437&view=rev
Log:
fix String utilities and testcases
Modified:
trunk/libzypp/tests/zypp/base/String_test.cc
trunk/libzypp/zypp/base/String.cc
trunk/libzypp/zypp/base/String.h
Modified: trunk/libzypp/tests/zypp/base/String_test.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/tests/zypp/base/String_test.cc?rev=11437&r1=11436&r2=11437&view=diff
==============================================================================
--- trunk/libzypp/tests/zypp/base/String_test.cc (original)
+++ trunk/libzypp/tests/zypp/base/String_test.cc Wed Oct 22 12:07:10 2008
@@ -1,9 +1,6 @@
-#include <string>
-#include <vector>
-#include <iterator>
-
#include
+#include "zypp/base/LogTools.h"
#include "zypp/base/String.h"
using boost::unit_test::test_suite;
@@ -97,17 +94,17 @@
BOOST_AUTO_TEST_CASE(convertions)
{
- BOOST_CHECK_EQUAL(str::numstring(42), "42");
- BOOST_CHECK_EQUAL(str::numstring(42, 4), " 42");
- BOOST_CHECK_EQUAL(str::numstring(42, -4), "42 ");
-
- BOOST_CHECK_EQUAL(str::hexstring(42), "0x0000002a");
- BOOST_CHECK_EQUAL(str::hexstring(42, 4), "0x2a");
- BOOST_CHECK_EQUAL(str::hexstring(42, -4), "0x2a");
-
- BOOST_CHECK_EQUAL(str::octstring(42), "00052");
- //BOOST_CHECK_EQUAL(str::octstring(42, 4), "0052");
- //BOOST_CHECK_EQUAL(str::octstring(42, -4), "052");
+ BOOST_CHECK_EQUAL(str::numstring(42), "42");
+ BOOST_CHECK_EQUAL(str::numstring(42, 6), " 42");
+ BOOST_CHECK_EQUAL(str::numstring(42, -6), "42 ");
+
+ BOOST_CHECK_EQUAL(str::hexstring(42), "0x0000002a");
+ BOOST_CHECK_EQUAL(str::hexstring(42, 6), "0x002a");
+ BOOST_CHECK_EQUAL(str::hexstring(42, -6), "0x2a ");
+
+ BOOST_CHECK_EQUAL(str::octstring(42), "00052");
+ BOOST_CHECK_EQUAL(str::octstring(42, 6), "000052");
+ BOOST_CHECK_EQUAL(str::octstring(42, -6), "052 ");
BOOST_CHECK_EQUAL(str::strtonum<int>("42"), 42);
@@ -118,27 +115,57 @@
BOOST_AUTO_TEST_CASE(operations)
{
- //BOOST_CHECK_EQUAL(str::ltrim(" foo "), "foo");
- //BOOST_CHECK_EQUAL(str::rtrim(" f ffo "), "f ffo");
- BOOST_CHECK_EQUAL(str::trim(" f ffo "), "f ffo");
- BOOST_CHECK_EQUAL(str::trim(" f ffo "), "f ffo");
+ BOOST_CHECK_EQUAL(str::ltrim(" \t f \t ffo \t "), "f \t ffo \t ");
+ BOOST_CHECK_EQUAL(str::rtrim(" \t f \t ffo \t "), " \t f \t ffo");
+ BOOST_CHECK_EQUAL(str::trim(" \t f \t ffo \t "), "f \t ffo");
+
+ // strip first
+ {
+ string tostrip(" Oh! la la ");
+ string word( str::stripFirstWord(tostrip, true) ); // ltrim first
+ BOOST_CHECK_EQUAL(word, "Oh!");
+ BOOST_CHECK_EQUAL(tostrip, "la la ");
+ }
+ {
+ string tostrip(" Oh! la la ");
+ string word( str::stripFirstWord(tostrip, false) ); // no ltrim first
+ BOOST_CHECK_EQUAL(word, "");
+ BOOST_CHECK_EQUAL(tostrip, "Oh! la la ");
+ }
- // strip
+ // strip last
{
- string tostrip("Oh! la la");
- str::stripFirstWord(tostrip, false);
- BOOST_CHECK_EQUAL(tostrip, "la la");
+ string tostrip(" Oh! la la ");
+ string word( str::stripLastWord(tostrip, true) ); // rtrim first
+ BOOST_CHECK_EQUAL(word, "la");
+ BOOST_CHECK_EQUAL(tostrip, " Oh! la");
}
- // strip
{
- string tostrip("Oh! la la");
- str::stripLastWord(tostrip, false);
- BOOST_CHECK_EQUAL(tostrip, "Oh! la");
+ string tostrip(" Oh! la la ");
+ string word( str::stripLastWord(tostrip, false) ); // no rtrim first
+ BOOST_CHECK_EQUAL(word, "");
+ BOOST_CHECK_EQUAL(tostrip, " Oh! la la");
}
+}
- BOOST_CHECK( ! str::hasPrefix("foolala", "oo"));
- BOOST_CHECK( str::hasPrefix("foolala", "foo"));
+BOOST_AUTO_TEST_CASE(prefix_suffix)
+{
+ BOOST_CHECK( str::hasPrefix("abcXabcYabc", "abcX") );
+ BOOST_CHECK( str::hasSuffix("abcXabcYabc", "Yabc") );
+ BOOST_CHECK_EQUAL( str::stripPrefix("abcXabcYabc", "abcX"), "abcYabc" );
+ BOOST_CHECK_EQUAL( str::stripSuffix("abcXabcYabc", "Yabc"), "abcXabc" );
-}
+ BOOST_CHECK( ! str::hasPrefix("abcXabcYabc", "ac") );
+ BOOST_CHECK( ! str::hasSuffix("abcXabcYabc", "ac") );
+ BOOST_CHECK_EQUAL( str::stripPrefix("abcXabcYabc", "ac"), "abcXabcYabc" );
+ BOOST_CHECK_EQUAL( str::stripSuffix("abcXabcYabc", "ac"), "abcXabcYabc" );
+
+ BOOST_CHECK( str::startsWith("abcXabcYabc", "abc") );
+ BOOST_CHECK( str::endsWith("abcXabcYabc", "abc") );
+
+ BOOST_CHECK( str::contains("abcXabcYabc", "XabcY") );
+ BOOST_CHECK( ! str::contains("abcXabcYabc", "xabcy") );
+ BOOST_CHECK( str::containsCI("abcXabcYabc", "xabcy") );
+}
Modified: trunk/libzypp/zypp/base/String.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/base/String.cc?rev=11437&r1=11436&r2=11437&view=diff
==============================================================================
--- trunk/libzypp/zypp/base/String.cc (original)
+++ trunk/libzypp/zypp/base/String.cc Wed Oct 22 12:07:10 2008
@@ -132,7 +132,7 @@
std::string ret( s );
- if ( trim_r && L_TRIM )
+ if ( trim_r & L_TRIM )
{
std::string::size_type p = ret.find_first_not_of( " \t\n" );
if ( p == std::string::npos )
@@ -141,7 +141,7 @@
ret = ret.substr( p );
}
- if ( trim_r && R_TRIM )
+ if ( trim_r & R_TRIM )
{
std::string::size_type p = ret.find_last_not_of( " \t\n" );
if ( p == std::string::npos )
Modified: trunk/libzypp/zypp/base/String.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/base/String.h?rev=11437&r1=11436&r2=11437&view=diff
==============================================================================
--- trunk/libzypp/zypp/base/String.h (original)
+++ trunk/libzypp/zypp/base/String.h Wed Oct 22 12:07:10 2008
@@ -610,6 +610,16 @@
}
//@}
+ /** \name Locate substring. */
+ //@{
+ /** Locate substring case sensitive. */
+ inline bool contains( const C_Str & str_r, const C_Str & val_r )
+ { return ::strstr( str_r, val_r ); }
+ /** Locate substring case insensitive. */
+ inline bool containsCI( const C_Str & str_r, const C_Str & val_r )
+ { return ::strcasestr( str_r, val_r ); }
+ //@}
+
///////////////////////////////////////////////////////////////////
/** \name Trimming whitepace.
* \todo optimize l/r trim.
@@ -640,10 +650,6 @@
std::string getline( std::istream & str, const Trim trim_r );
- inline bool startsWith(const std::string& s, const char* str) { return s.find(str) == 0; }
- inline bool endsWith(const std::string& s, const char* str) { return s.find(str) == s.size() - strlen(str); }
- inline bool contains(const std::string& s, const char* str) { return s.find(str) != std::string::npos; }
-
///////////////////////////////////////////////////////////////////
/** \name String prefix/suffix handling.
@@ -668,6 +674,13 @@
return std::string( str_r, str_r.size() - suffix_r.size() );
return str_r.c_str();
}
+
+ /** alias for \ref hasPrefix */
+ inline bool startsWith( const C_Str & str_r, const C_Str & prefix_r )
+ { return hasPrefix( str_r, prefix_r ); }
+ /** alias for \ref hasSuffix */
+ inline bool endsWith( const C_Str & str_r, const C_Str & prefix_r )
+ { return hasSuffix( str_r, prefix_r ); }
//@}
/////////////////////////////////////////////////////////////////
} // namespace str
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org