Skip to content
Snippets Groups Projects
Commit 520414ca authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Added methods startsWith and endsWith to String

parent cfa5cc0a
No related branches found
No related tags found
1 merge request!57Small fixes
......@@ -342,6 +342,16 @@ class String
* \include StringExampleSplit.out
*/
std::vector< String > split( const char separator = ' ', SplitSkip skipEmpty = SplitSkip::NoSkip ) const;
/**
* \brief Checks if the string starts with given prefix.
*/
bool startsWith( const String& prefix ) const;
/**
* \brief Checks if the string ends with given suffix.
*/
bool endsWith( const String& suffix ) const;
};
/**
......
......@@ -223,6 +223,22 @@ String::split( const char separator, SplitSkip skip ) const
return parts;
}
inline bool
String::startsWith( const String& prefix ) const
{
if( prefix.getSize() > getSize())
return false;
return std::equal( prefix.begin(), prefix.end(), begin() );
}
inline bool
String::endsWith( const String& suffix ) const
{
if( suffix.getSize() > getSize())
return false;
return std::equal( suffix.rbegin(), suffix.rend(), rbegin() );
}
inline String operator+( char string1, const String& string2 )
{
return convertToString( string1 ) + string2;
......
......@@ -317,7 +317,63 @@ TEST( StringTest, SaveLoad )
EXPECT_EQ( str1, str2 );
EXPECT_EQ( std::remove( TEST_FILE_NAME ), 0 );
};
}
TEST( StringTest, startsWith )
{
String str( "abracadabra" );
EXPECT_TRUE( str.startsWith( "a" ) );
EXPECT_TRUE( str.startsWith( "ab" ) );
EXPECT_TRUE( str.startsWith( "abr" ) );
EXPECT_TRUE( str.startsWith( "abra" ) );
EXPECT_TRUE( str.startsWith( "abrac" ) );
EXPECT_TRUE( str.startsWith( "abraca" ) );
EXPECT_TRUE( str.startsWith( "abracad" ) );
EXPECT_TRUE( str.startsWith( "abracada" ) );
EXPECT_TRUE( str.startsWith( "abracadab" ) );
EXPECT_TRUE( str.startsWith( "abracadabr" ) );
EXPECT_TRUE( str.startsWith( "abracadabra" ) );
EXPECT_FALSE( str.startsWith( "b" ) );
EXPECT_FALSE( str.startsWith( "aa" ) );
EXPECT_FALSE( str.startsWith( "aba" ) );
EXPECT_FALSE( str.startsWith( "abrb" ) );
EXPECT_FALSE( str.startsWith( "abrad" ) );
EXPECT_FALSE( str.startsWith( "abracb" ) );
EXPECT_FALSE( str.startsWith( "abracaa" ) );
EXPECT_FALSE( str.startsWith( "abracadb" ) );
EXPECT_FALSE( str.startsWith( "abracadaa" ) );
EXPECT_FALSE( str.startsWith( "abracadaba" ) );
EXPECT_FALSE( str.startsWith( "abracadabrb" ) );
EXPECT_FALSE( str.startsWith( "abracadabrab" ) );
}
TEST( StringTest, endsWith )
{
String str( "abracadabra" );
EXPECT_TRUE( str.endsWith( "a" ) );
EXPECT_TRUE( str.endsWith( "ra" ) );
EXPECT_TRUE( str.endsWith( "bra" ) );
EXPECT_TRUE( str.endsWith( "abra" ) );
EXPECT_TRUE( str.endsWith( "dabra" ) );
EXPECT_TRUE( str.endsWith( "adabra" ) );
EXPECT_TRUE( str.endsWith( "cadabra" ) );
EXPECT_TRUE( str.endsWith( "acadabra" ) );
EXPECT_TRUE( str.endsWith( "racadabra" ) );
EXPECT_TRUE( str.endsWith( "bracadabra" ) );
EXPECT_TRUE( str.endsWith( "abracadabra" ) );
EXPECT_FALSE( str.endsWith( "b" ) );
EXPECT_FALSE( str.endsWith( "ba" ) );
EXPECT_FALSE( str.endsWith( "ara" ) );
EXPECT_FALSE( str.endsWith( "bbra" ) );
EXPECT_FALSE( str.endsWith( "babra" ) );
EXPECT_FALSE( str.endsWith( "bdabra" ) );
EXPECT_FALSE( str.endsWith( "badabra" ) );
EXPECT_FALSE( str.endsWith( "bcadabra" ) );
EXPECT_FALSE( str.endsWith( "aacadabra" ) );
EXPECT_FALSE( str.endsWith( "aracadabra" ) );
EXPECT_FALSE( str.endsWith( "bbracadabra" ) );
EXPECT_FALSE( str.endsWith( "babracadabra" ) );
}
#endif
#include "main.h"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment