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:
ejakowatz 2002-11-15 03:36:17 +00:00
parent 8f3cf68703
commit 202ed890a9
4 changed files with 79 additions and 55 deletions

View File

@ -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);

View File

@ -6,6 +6,6 @@ SUPPORT_KIT_SOURCE =
List.cpp
Locker.cpp
StopWatch.cpp
#String.cpp
#string_helper.cpp
String.cpp
string_helper.cpp
;

View File

@ -1,5 +1,6 @@
#include "StringAccessTest.h"
#include "cppunit/TestCaller.h"
#include <stdio.h>
#include <String.h>
#include <UTF8.h>

View File

@ -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();