BString: fix Split() for multiple characters separators...
as suggested by Janus in #14045. Thanks! * add a unit test for BString::Split().
This commit is contained in:
parent
7cf48d4e51
commit
a25f7264b6
|
@ -525,7 +525,7 @@ BString::Split(const char* separator, bool noEmptyStrings,
|
|||
if (endIndex == length)
|
||||
break;
|
||||
|
||||
index = endIndex + 1;
|
||||
index = endIndex + separatorLength;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -74,6 +74,7 @@ UnitTestLib libsupporttest.so
|
|||
StringCharAccessTest.cpp
|
||||
StringSearchTest.cpp
|
||||
StringReplaceTest.cpp
|
||||
StringSplitTest.cpp
|
||||
|
||||
#BBlockCache
|
||||
BlockCacheTest.cpp
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
#include "StringSplitTest.h"
|
||||
#include "cppunit/TestCaller.h"
|
||||
#include <String.h>
|
||||
#include <StringList.h>
|
||||
|
||||
StringSplitTest::StringSplitTest(std::string name) :
|
||||
BTestCase(name)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
StringSplitTest::~StringSplitTest()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
StringSplitTest::PerformTest(void)
|
||||
{
|
||||
BString *str1;
|
||||
|
||||
NextSubTest();
|
||||
BStringList stringList1;
|
||||
str1 = new BString("test::string");
|
||||
str1->Split(":", true, stringList1);
|
||||
CPPUNIT_ASSERT(stringList1.CountStrings() == 2);
|
||||
delete str1;
|
||||
|
||||
NextSubTest();
|
||||
BStringList stringList2;
|
||||
str1 = new BString("test::string");
|
||||
str1->Split("::", true, stringList2);
|
||||
CPPUNIT_ASSERT(stringList2.CountStrings() == 2);
|
||||
delete str1;
|
||||
|
||||
NextSubTest();
|
||||
BStringList stringList3;
|
||||
str1 = new BString("test::string");
|
||||
str1->Split("::", false, stringList3);
|
||||
CPPUNIT_ASSERT(stringList3.CountStrings() == 2);
|
||||
delete str1;
|
||||
|
||||
NextSubTest();
|
||||
BStringList stringList4;
|
||||
str1 = new BString("test::string");
|
||||
str1->Split(":", false, stringList4);
|
||||
CPPUNIT_ASSERT(stringList4.CountStrings() == 3);
|
||||
delete str1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
CppUnit::Test *StringSplitTest::suite(void)
|
||||
{
|
||||
typedef CppUnit::TestCaller<StringSplitTest>
|
||||
StringSplitTestCaller;
|
||||
|
||||
return(new StringSplitTestCaller("BString::Split Test", &StringSplitTest::PerformTest));
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef StringSplitTest_H
|
||||
#define StringSplitTest_H
|
||||
|
||||
#include "TestCase.h"
|
||||
#include <String.h>
|
||||
|
||||
|
||||
class StringSplitTest : public BTestCase
|
||||
{
|
||||
|
||||
private:
|
||||
|
||||
protected:
|
||||
|
||||
public:
|
||||
static Test *suite(void);
|
||||
void PerformTest(void);
|
||||
StringSplitTest(std::string name = "");
|
||||
virtual ~StringSplitTest();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -16,6 +16,7 @@
|
|||
#include "StringCharAccessTest.h"
|
||||
#include "StringReplaceTest.h"
|
||||
#include "StringSearchTest.h"
|
||||
#include "StringSplitTest.h"
|
||||
|
||||
CppUnit::Test *StringTestSuite()
|
||||
{
|
||||
|
@ -36,6 +37,7 @@ CppUnit::Test *StringTestSuite()
|
|||
testSuite->addTest(StringCharAccessTest::suite());
|
||||
testSuite->addTest(StringReplaceTest::suite());
|
||||
testSuite->addTest(StringSearchTest::suite());
|
||||
testSuite->addTest(StringSplitTest::suite());
|
||||
|
||||
return(testSuite);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue