Some bug fixing on BString and it's unit tests. Should now pass all
current tests! Now included in the build. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1946 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
8f3cf68703
commit
202ed890a9
@ -86,17 +86,24 @@ int32
|
||||
BString::CountChars() const
|
||||
{
|
||||
int32 count = 0;
|
||||
char *ptr = _privateData;
|
||||
|
||||
if (ptr == NULL)
|
||||
return 0;
|
||||
|
||||
const char *ptr = String();
|
||||
|
||||
while (*ptr)
|
||||
{
|
||||
// Jump to next UTF8 character
|
||||
// ejaesler: BGA's nifty function
|
||||
ptr += utf8_char_len(*ptr);
|
||||
count++;
|
||||
}
|
||||
#if 0
|
||||
while (*ptr++)
|
||||
{
|
||||
count++;
|
||||
|
||||
// Jump to next UTF8 character
|
||||
for (; (*ptr & 0xc0) == 0x80; ptr++);
|
||||
}
|
||||
#endif
|
||||
|
||||
return count;
|
||||
}
|
||||
@ -1503,7 +1510,9 @@ BString::_GrowBy(int32 size)
|
||||
ASSERT(curLen + size >= 0);
|
||||
|
||||
if (_privateData != NULL)
|
||||
{
|
||||
_privateData -= sizeof(int32);
|
||||
}
|
||||
|
||||
_privateData = (char*)realloc(_privateData,
|
||||
curLen + size + sizeof(int32) + 1);
|
||||
@ -1517,7 +1526,7 @@ BString::_GrowBy(int32 size)
|
||||
}
|
||||
|
||||
|
||||
char*
|
||||
char *
|
||||
BString::_OpenAtBy(int32 offset, int32 length)
|
||||
{
|
||||
ASSERT(offset >= 0);
|
||||
|
@ -6,6 +6,6 @@ SUPPORT_KIT_SOURCE =
|
||||
List.cpp
|
||||
Locker.cpp
|
||||
StopWatch.cpp
|
||||
#String.cpp
|
||||
#string_helper.cpp
|
||||
String.cpp
|
||||
string_helper.cpp
|
||||
;
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "StringAccessTest.h"
|
||||
#include "cppunit/TestCaller.h"
|
||||
#include <stdio.h>
|
||||
#include <String.h>
|
||||
#include <UTF8.h>
|
||||
|
||||
|
@ -51,12 +51,14 @@ StringSearchTest::PerformTest(void)
|
||||
CPPUNIT_ASSERT(i == B_ERROR);
|
||||
delete string1;
|
||||
|
||||
//Commented, since crashes R5
|
||||
//NextSubTest();
|
||||
//string1 = new BString("string");
|
||||
//i = string1->FindFirst((char*)NULL);
|
||||
//CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
//delete string1;
|
||||
#ifndef TEST_R5
|
||||
// Commented, since crashes R5
|
||||
NextSubTest();
|
||||
string1 = new BString("string");
|
||||
i = string1->FindFirst((char*)NULL);
|
||||
CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
delete string1;
|
||||
#endif
|
||||
|
||||
//FindFirst(BString&, int32)
|
||||
NextSubTest();
|
||||
@ -102,12 +104,14 @@ StringSearchTest::PerformTest(void)
|
||||
CPPUNIT_ASSERT(i == B_ERROR);
|
||||
delete string1;
|
||||
|
||||
#ifndef TEST_R5
|
||||
//Commented since crashes R5
|
||||
//NextSubTest();
|
||||
//string1 = new BString("abc abc abc");
|
||||
//i = string1->FindFirst((char*)NULL, 3);
|
||||
//CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
//delete string1;
|
||||
NextSubTest();
|
||||
string1 = new BString("abc abc abc");
|
||||
i = string1->FindFirst((char*)NULL, 3);
|
||||
CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
delete string1;
|
||||
#endif
|
||||
|
||||
//FindFirst(char)
|
||||
NextSubTest();
|
||||
@ -170,13 +174,15 @@ StringSearchTest::PerformTest(void)
|
||||
i = string1->FindLast("some text");
|
||||
CPPUNIT_ASSERT(i == B_ERROR);
|
||||
delete string1;
|
||||
|
||||
|
||||
#ifndef TEST_R5
|
||||
//Commented since crashes R5
|
||||
//NextSubTest();
|
||||
//string1 = new BString("string");
|
||||
//i = string1->FindLast((char*)NULL);
|
||||
//CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
//delete string1;
|
||||
NextSubTest();
|
||||
string1 = new BString("string");
|
||||
i = string1->FindLast((char*)NULL);
|
||||
CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
delete string1;
|
||||
#endif
|
||||
|
||||
//FindLast(BString&, int32)
|
||||
NextSubTest();
|
||||
@ -207,13 +213,15 @@ StringSearchTest::PerformTest(void)
|
||||
i = string1->FindLast("abc", -10);
|
||||
CPPUNIT_ASSERT(i == B_ERROR);
|
||||
delete string1;
|
||||
|
||||
|
||||
#ifndef TEST_R5
|
||||
//Commented since crashes r5
|
||||
//NextSubTest();
|
||||
//string1 = new BString("abc abc abc");
|
||||
//i = string1->FindLast((char*)NULL, 3);
|
||||
//CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
//delete string1;
|
||||
NextSubTest();
|
||||
string1 = new BString("abc abc abc");
|
||||
i = string1->FindLast((char*)NULL, 3);
|
||||
CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
delete string1;
|
||||
#endif
|
||||
|
||||
//FindLast(char)
|
||||
NextSubTest();
|
||||
@ -299,12 +307,14 @@ StringSearchTest::PerformTest(void)
|
||||
CPPUNIT_ASSERT(i == B_ERROR);
|
||||
delete string1;
|
||||
|
||||
#ifndef TEST_R5
|
||||
//Commented, since crashes R5
|
||||
//NextSubTest();
|
||||
//string1 = new BString("string");
|
||||
//i = string1->IFindFirst((char*)NULL);
|
||||
//CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
//delete string1;
|
||||
NextSubTest();
|
||||
string1 = new BString("string");
|
||||
i = string1->IFindFirst((char*)NULL);
|
||||
CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
delete string1;
|
||||
#endif
|
||||
|
||||
//IFindFirst(BString&, int32)
|
||||
NextSubTest();
|
||||
@ -364,22 +374,24 @@ StringSearchTest::PerformTest(void)
|
||||
CPPUNIT_ASSERT(i == B_ERROR);
|
||||
delete string1;
|
||||
|
||||
#ifndef TEST_R5
|
||||
//IFindLast(BString&)
|
||||
//NextSubTest();
|
||||
//string1 = new BString("last but not least");
|
||||
//string2 = new BString("st");
|
||||
//i = string1->IFindLast(*string2);
|
||||
//CPPUNIT_ASSERT(i == 16);
|
||||
//delete string1;
|
||||
//delete string2;
|
||||
NextSubTest();
|
||||
string1 = new BString("last but not least");
|
||||
string2 = new BString("st");
|
||||
i = string1->IFindLast(*string2);
|
||||
CPPUNIT_ASSERT(i == 16);
|
||||
delete string1;
|
||||
delete string2;
|
||||
|
||||
//NextSubTest();
|
||||
//string1 = new BString("laSt but NOT leaSt");
|
||||
//string2 = new BString("sT");
|
||||
//i = string1->IFindLast(*string2);
|
||||
//CPPUNIT_ASSERT(i == 16);
|
||||
//delete string1;
|
||||
//delete string2;
|
||||
NextSubTest();
|
||||
string1 = new BString("laSt but NOT leaSt");
|
||||
string2 = new BString("sT");
|
||||
i = string1->IFindLast(*string2);
|
||||
CPPUNIT_ASSERT(i == 16);
|
||||
delete string1;
|
||||
delete string2;
|
||||
#endif
|
||||
|
||||
NextSubTest();
|
||||
string1 = new BString;
|
||||
@ -408,12 +420,14 @@ StringSearchTest::PerformTest(void)
|
||||
CPPUNIT_ASSERT(i == B_ERROR);
|
||||
delete string1;
|
||||
|
||||
#ifndef TEST_R5
|
||||
//Commented since crashes R5
|
||||
//NextSubTest();
|
||||
//string1 = new BString("string");
|
||||
//i = string1->IFindLast((char*)NULL);
|
||||
//CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
//delete string1;
|
||||
NextSubTest();
|
||||
string1 = new BString("string");
|
||||
i = string1->IFindLast((char*)NULL);
|
||||
CPPUNIT_ASSERT(i == B_BAD_VALUE);
|
||||
delete string1;
|
||||
#endif
|
||||
|
||||
//FindLast(BString&, int32)
|
||||
NextSubTest();
|
||||
|
Loading…
x
Reference in New Issue
Block a user