fixes bug 264274 "support dependent strings in frozen string API" r=biesi sr=bsmedberg

git-svn-id: svn://10.0.0.236/trunk@165390 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
darin%meer.net
2004-11-16 04:44:57 +00:00
parent a244a8cf11
commit a8b241a7fc
7 changed files with 316 additions and 8 deletions

View File

@@ -345,6 +345,90 @@ static PRBool test_compress_ws()
return rv;
}
static PRBool test_depend()
{
static const char kData[] = "hello world";
nsCStringContainer s;
NS_ENSURE_SUCCESS(
NS_CStringContainerInit2(s, kData, sizeof(kData)-1,
NS_CSTRING_CONTAINER_INIT_DEPEND),
PR_FALSE);
const char *sd;
NS_CStringGetData(s, &sd);
PRBool rv = (sd == kData);
NS_CStringContainerFinish(s);
return rv;
}
static PRBool test_depend_sub()
{
static const char kData[] = "hello world";
nsCStringContainer s;
NS_ENSURE_SUCCESS(
NS_CStringContainerInit2(s, kData, sizeof(kData)-1,
NS_CSTRING_CONTAINER_INIT_DEPEND |
NS_CSTRING_CONTAINER_INIT_SUBSTRING),
PR_FALSE);
PRBool terminated;
const char *sd;
PRUint32 len = NS_CStringGetData(s, &sd, &terminated);
PRBool rv = (sd == kData && len == sizeof(kData)-1 && !terminated);
NS_CStringContainerFinish(s);
return rv;
}
static PRBool test_adopt()
{
static const char kData[] = "hello world";
char *data = (char *) nsMemory::Clone(kData, sizeof(kData));
if (!data)
return PR_FALSE;
nsCStringContainer s;
NS_ENSURE_SUCCESS(
NS_CStringContainerInit2(s, data, PR_UINT32_MAX,
NS_CSTRING_CONTAINER_INIT_ADOPT),
PR_FALSE); // leaks data on failure *shrug*
const char *sd;
NS_CStringGetData(s, &sd);
PRBool rv = (sd == data);
NS_CStringContainerFinish(s);
return rv;
}
static PRBool test_adopt_sub()
{
static const char kData[] = "hello world";
char *data = (char *) nsMemory::Clone(kData, sizeof(kData)-1);
if (!data)
return PR_FALSE;
nsCStringContainer s;
NS_ENSURE_SUCCESS(
NS_CStringContainerInit2(s, data, sizeof(kData)-1,
NS_CSTRING_CONTAINER_INIT_ADOPT |
NS_CSTRING_CONTAINER_INIT_SUBSTRING),
PR_FALSE); // leaks data on failure *shrug*
PRBool terminated;
const char *sd;
PRUint32 len = NS_CStringGetData(s, &sd, &terminated);
PRBool rv = (sd == data && len == sizeof(kData)-1 && !terminated);
NS_CStringContainerFinish(s);
return rv;
}
//----
typedef PRBool (*TestFunc)();
@@ -362,6 +446,10 @@ tests[] =
{ "test_append", test_append },
{ "test_replace", test_replace },
{ "test_compress_ws", test_compress_ws },
{ "test_depend", test_depend },
{ "test_depend_sub", test_depend_sub },
{ "test_adopt", test_adopt },
{ "test_adopt_sub", test_adopt_sub },
{ nsnull, nsnull }
};