Commit 520414ca authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Added methods startsWith and endsWith to String

parent cfa5cc0a
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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;
};

/**
+16 −0
Original line number Diff line number Diff line
@@ -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;
+57 −1
Original line number Diff line number Diff line
@@ -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"