/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "plstr.h"
#include "nspr.h"
#include <stdio.h>
/* PL_strlen */
PRBool test_001(
void ) {
static struct {
const char * str;
PRUint32 len;
} array[] = {{(
const char *)0, 0},
{
"" , 0},
{
"a" , 1},
{
"abcdefg" , 7},
{
"abcdefg\0hijk" , 7}};
int i;
printf(
"Test 001 (PL_strlen) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
if (PL_strlen(array[i].str) != array[i].len) {
printf(
"FAIL (%d: %s->%d, %d)\n" , i,
array[i].str ? array[i].str :
"(null)" , PL_strlen(array[i].str),
array[i].len);
return PR_FALSE;
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strnlen */
PRBool test_002(
void ) {
static struct {
const char * str;
PRUint32 max;
PRUint32 len;
} array[] = {
{(
const char *)0, 0, 0},
{(
const char *)0, 12, 0},
{
"" , 0, 0},
{
"" , 12, 0},
{
"a" , 0, 0},
{
"a" , 1, 1},
{
"a" , 12, 1},
{
"abcdefg" , 0, 0},
{
"abcdefg" , 1, 1},
{
"abcdefg" , 7, 7},
{
"abcdefg" , 12, 7},
{
"abcdefg\0hijk" , 0, 0},
{
"abcdefg\0hijk" , 1, 1},
{
"abcdefg\0hijk" , 7, 7},
{
"abcdefg\0hijk" , 12, 7},
};
int i;
printf(
"Test 002 (PL_strnlen) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
if (PL_strnlen(array[i].str, array[i].max) != array[i].len) {
printf(
"FAIL (%d: %s,%d->%d, %d)\n" , i,
array[i].str ? array[i].str :
"(null)" , array[i].max,
PL_strnlen(array[i].str, array[i].max), array[i].len);
return PR_FALSE;
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strcpy */
PRBool test_003(
void ) {
static char buffer[1024];
static struct {
const char * str;
char * dest;
char * rv;
PRBool comp;
} array[] = {{(
const char *)0, (
char *)0, (
char *)0, PR_FALSE},
{(
const char *)0, buffer, (
char *)0, PR_FALSE},
{
"" , (
char *)0, (
char *)0, PR_FALSE},
{
"" , buffer, buffer, PR_TRUE},
{
"a" , (
char *)0, (
char *)0, PR_FALSE},
{
"a" , buffer, buffer, PR_TRUE},
{
"abcdefg" , (
char *)0, (
char *)0, PR_FALSE},
{
"abcdefg" , buffer, buffer, PR_TRUE},
{
"wxyz\0abcdefg" , (
char *)0, (
char *)0, PR_FALSE},
{
"wxyz\0abcdefg" , buffer, buffer, PR_TRUE}};
int i;
printf(
"Test 003 (PL_strcpy) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv;
const char * a = array[i].str;
const char * b = (
const char *)array[i].dest;
rv = PL_strcpy(array[i].dest, array[i].str);
if (array[i].rv != rv) {
printf(
"FAIL %d: (0x%x, %s)->0x%x\n" , i, array[i].dest,
array[i].str ? array[i].str :
"(null)" , rv);
return PR_FALSE;
}
if (array[i].comp) {
while (1) {
if (*a != *b) {
printf(
"FAIL %d: %s->%.32s\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].dest ? array[i].dest :
"(null)" );
return PR_FALSE;
}
if ((
char )0 == *a) {
break ;
}
a++;
b++;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strncpy */
PRBool test_004(
void ) {
static char buffer[1024];
static struct {
const char * str;
PRUint32 len;
char * dest;
char * rv;
PRBool comp;
const char * result;
PRBool nulled;
} array[] = {
{(
const char *)0, 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0,
PR_FALSE},
{(
const char *)0, 0, buffer, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{(
const char *)0, 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0,
PR_FALSE},
{(
const char *)0, 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0,
PR_FALSE},
{(
const char *)0, 1, buffer, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{(
const char *)0, 7, buffer, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"" , 0, buffer, buffer, PR_FALSE, (
const char *)0, PR_FALSE},
{
"" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"" , 1, buffer, buffer, PR_TRUE,
"" , PR_TRUE},
{
"" , 7, buffer, buffer, PR_TRUE,
"" , PR_TRUE},
{
"a" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"a" , 0, buffer, buffer, PR_FALSE, (
const char *)0, PR_FALSE},
{
"a" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"a" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"b" , 1, buffer, buffer, PR_TRUE,
"b" , PR_FALSE},
{
"c" , 7, buffer, buffer, PR_TRUE,
"c" , PR_TRUE},
{
"de" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"de" , 0, buffer, buffer, PR_FALSE, (
const char *)0, PR_FALSE},
{
"de" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"de" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"fg" , 1, buffer, buffer, PR_TRUE,
"f" , PR_FALSE},
{
"hi" , 7, buffer, buffer, PR_TRUE,
"hi" , PR_TRUE},
{
"jklmnopq" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"jklmnopq" , 0, buffer, buffer, PR_FALSE, (
const char *)0, PR_FALSE},
{
"jklmnopq" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"jklmnopq" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"rstuvwxy" , 1, buffer, buffer, PR_TRUE,
"r" , PR_FALSE},
{
"zABCDEFG" , 7, buffer, buffer, PR_TRUE,
"zABCDEF" , PR_FALSE},
{
"a\0XXX" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"a\0XXX" , 0, buffer, buffer, PR_FALSE, (
const char *)0, PR_FALSE},
{
"a\0XXX" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"a\0XXX" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"b\0XXX" , 1, buffer, buffer, PR_TRUE,
"b" , PR_FALSE},
{
"c\0XXX" , 7, buffer, buffer, PR_TRUE,
"c" , PR_TRUE},
{
"de\0XXX" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"de\0XXX" , 0, buffer, buffer, PR_FALSE, (
const char *)0, PR_FALSE},
{
"de\0XXX" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"de\0XXX" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0, PR_FALSE},
{
"fg\0XXX" , 1, buffer, buffer, PR_TRUE,
"f" , PR_FALSE},
{
"hi\0XXX" , 7, buffer, buffer, PR_TRUE,
"hi" , PR_TRUE},
{
"jklmnopq\0XXX" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0,
PR_FALSE},
{
"jklmnopq\0XXX" , 0, buffer, buffer, PR_FALSE, (
const char *)0, PR_FALSE},
{
"jklmnopq\0XXX" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0,
PR_FALSE},
{
"jklmnopq\0XXX" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0,
PR_FALSE},
{
"rstuvwxy\0XXX" , 1, buffer, buffer, PR_TRUE,
"r" , PR_FALSE},
{
"zABCDEFG\0XXX" , 7, buffer, buffer, PR_TRUE,
"zABCDEF" , PR_FALSE},
};
int i;
printf(
"Test 004 (PL_strncpy) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv;
int j;
for (j = 0; j <
sizeof (buffer); j++) {
buffer[j] =
'-' ;
}
rv = PL_strncpy(array[i].dest, array[i].str, array[i].len);
if (array[i].rv != rv) {
printf(
"FAIL %d: (0x%x, %s, %lu)->0x%x\n" , i, array[i].dest,
array[i].str ? array[i].str :
"(null)" , array[i].len, rv);
return PR_FALSE;
}
if (array[i].comp) {
const char * a = array[i].result;
const char * b = array[i].dest;
while (*a) {
if (*a != *b) {
printf(
"FAIL %d: %s != %.32s\n" , i, array[i].result, array[i].dest);
return PR_FALSE;
}
a++;
b++;
}
if (array[i].nulled) {
if (*b !=
'\0' ) {
printf(
"FAIL %d: not terminated\n" , i);
return PR_FALSE;
}
}
else {
if (*b !=
'-' ) {
printf(
"FAIL %d: overstepped\n" , i);
return PR_FALSE;
}
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strncpyz */
PRBool test_005(
void ) {
static char buffer[1024];
static struct {
const char * str;
PRUint32 len;
char * dest;
char * rv;
PRBool comp;
const char * result;
} array[] = {
{(
const char *)0, 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{(
const char *)0, 0, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{(
const char *)0, 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{(
const char *)0, 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{(
const char *)0, 1, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{(
const char *)0, 7, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{
"" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"" , 0, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{
"" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"" , 1, buffer, buffer, PR_TRUE,
"" },
{
"" , 7, buffer, buffer, PR_TRUE,
"" },
{
"a" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"a" , 0, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{
"a" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"a" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"b" , 1, buffer, buffer, PR_TRUE,
"" },
{
"c" , 7, buffer, buffer, PR_TRUE,
"c" },
{
"de" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"de" , 0, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{
"de" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"de" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"fg" , 1, buffer, buffer, PR_TRUE,
"" },
{
"hi" , 7, buffer, buffer, PR_TRUE,
"hi" },
{
"jklmnopq" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"jklmnopq" , 0, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{
"jklmnopq" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"jklmnopq" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"rstuvwxy" , 1, buffer, buffer, PR_TRUE,
"" },
{
"zABCDEFG" , 7, buffer, buffer, PR_TRUE,
"zABCDE" },
{
"a\0XXX" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"a\0XXX" , 0, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{
"a\0XXX" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"a\0XXX" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"b\0XXX" , 1, buffer, buffer, PR_TRUE,
"" },
{
"c\0XXX" , 7, buffer, buffer, PR_TRUE,
"c" },
{
"de\0XXX" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"de\0XXX" , 0, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{
"de\0XXX" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"de\0XXX" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"fg\0XXX" , 1, buffer, buffer, PR_TRUE,
"" },
{
"hi\0XXX" , 7, buffer, buffer, PR_TRUE,
"hi" },
{
"jklmnopq\0XXX" , 0, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"jklmnopq\0XXX" , 0, buffer, (
char *)0, PR_FALSE, (
const char *)0},
{
"jklmnopq\0XXX" , 1, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"jklmnopq\0XXX" , 7, (
char *)0, (
char *)0, PR_FALSE, (
const char *)0},
{
"rstuvwxy\0XXX" , 1, buffer, buffer, PR_TRUE,
"" },
{
"zABCDEFG\0XXX" , 7, buffer, buffer, PR_TRUE,
"zABCDE" },
};
int i;
printf(
"Test 005 (PL_strncpyz) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv;
int j;
for (j = 0; j <
sizeof (buffer); j++) {
buffer[j] =
'-' ;
}
rv = PL_strncpyz(array[i].dest, array[i].str, array[i].len);
if (array[i].rv != rv) {
printf(
"FAIL %d: (0x%x, %s, %lu)->0x%x\n" , i, array[i].dest,
array[i].str ? array[i].str :
"(null)" , array[i].len, rv);
return PR_FALSE;
}
if (array[i].comp) {
const char * a = array[i].result;
const char * b = array[i].dest;
while (1) {
if (*a != *b) {
printf(
"FAIL %d: %s != %.32s\n" , i, array[i].result, array[i].dest);
return PR_FALSE;
}
if ((
char )0 == *a) {
break ;
}
a++;
b++;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strdup */
PRBool test_006(
void ) {
static const char * array[] = {(
const char *)0,
"" ,
"a" ,
"abcdefg" };
int i;
printf(
"Test 006 (PL_strdup) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strdup(array[i]);
if ((
char *)0 == rv) {
printf(
"FAIL %d: 0x%x -> 0\n" , i, array[i]);
return PR_FALSE;
}
if ((
const char *)0 == array[i]) {
if ((
char )0 != *rv) {
printf(
"FAIL %d: (const char *)0 -> %.32s\n" , i, rv);
return PR_FALSE;
}
}
else {
const char * a = array[i];
const char * b = (
const char *)rv;
while (1) {
if (*a != *b) {
printf(
"FAIL %d: %s != %.32s\n" , i, array[i], rv);
return PR_FALSE;
}
if ((
char )0 == *a) {
break ;
}
a++;
b++;
}
}
PL_strfree(rv);
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strndup */
PRBool test_007(
void ) {
static struct {
const char * str;
PRUint32 len;
const char * result;
} array[] = {{(
const char *)0, 0,
"" },
{(
const char *)0, 1,
"" },
{(
const char *)0, 7,
"" },
{
"" , 0,
"" },
{
"" , 1,
"" },
{
"" , 7,
"" },
{
"a" , 0,
"" },
{
"a" , 1,
"a" },
{
"a" , 7,
"a" },
{
"ab" , 0,
"" },
{
"ab" , 1,
"a" },
{
"ab" , 7,
"ab" },
{
"abcdefg" , 0,
"" },
{
"abcdefg" , 1,
"a" },
{
"abcdefg" , 7,
"abcdefg" },
{
"abcdefghijk" , 0,
"" },
{
"abcdefghijk" , 1,
"a" },
{
"abcdefghijk" , 7,
"abcdefg" },
{
"abcdef\0ghijk" , 0,
"" },
{
"abcdef\0ghijk" , 1,
"a" },
{
"abcdef\0ghijk" , 7,
"abcdef" }};
int i;
printf(
"Test 007 (PL_strndup) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strndup(array[i].str, array[i].len);
const char * a;
const char * b;
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%lu -> 0\n" , i,
array[i].str ? array[i].str :
"(null)" , array[i].len);
return PR_FALSE;
}
a = array[i].result;
b = (
const char *)rv;
while (1) {
if (*a != *b) {
printf(
"FAIL %d: %s != %.32s\n" , i, array[i].result, rv);
return PR_FALSE;
}
if ((
char )0 == *a) {
break ;
}
a++;
b++;
}
free(rv);
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strcat */
PRBool test_008(
void ) {
static struct {
const char * first;
const char * second;
const char * result;
} array[] = {{(
const char *)0, (
const char *)0, (
const char *)0},
{(
const char *)0,
"xyz" , (
const char *)0},
{
"" , (
const char *)0,
"" },
{
"" ,
"" ,
"" },
{
"ab" ,
"" ,
"ab" },
{
"cd" ,
"ef" ,
"cdef" },
{
"gh\0X" ,
"" ,
"gh" },
{
"ij\0X" ,
"kl" ,
"ijkl" },
{
"mn\0X" ,
"op\0X" ,
"mnop" },
{
"qr" ,
"st\0X" ,
"qrst" },
{
"uv\0X" ,
"wx\0X" ,
"uvwx" }};
int i;
printf(
"Test 008 (PL_strcat) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char buffer[1024];
int j;
char * rv;
for (j = 0; j <
sizeof (buffer); j++) {
buffer[j] =
'-' ;
}
if ((
const char *)0 != array[i].first) {
(
void )PL_strcpy(buffer, array[i].first);
}
rv = PL_strcat(((
const char *)0 == array[i].first) ? (
char *)0 : buffer,
array[i].second);
if ((
const char *)0 == array[i].result) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s+%s -> %.32s, not zero\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" , rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s+%s -> null, not %s\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" , array[i].result);
return PR_FALSE;
}
else {
const char * a = array[i].result;
const char * b = (
const char *)rv;
while (1) {
if (*a != *b) {
printf(
"FAIL %d: %s+%s -> %.32s, not %s\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" , rv,
array[i].result);
return PR_FALSE;
}
if ((
char )0 == *a) {
break ;
}
a++;
b++;
}
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strncat */
PRBool test_009(
void ) {
static struct {
const char * first;
const char * second;
PRUint32 length;
PRBool nulled;
const char * result;
} array[] = {{(
const char *)0, (
const char *)0, 0, PR_FALSE, (
const char *)0},
{(
const char *)0, (
const char *)0, 1, PR_FALSE, (
const char *)0},
{(
const char *)0, (
const char *)0, 7, PR_FALSE, (
const char *)0},
{(
const char *)0,
"" , 0, PR_FALSE, (
const char *)0},
{(
const char *)0,
"" , 1, PR_FALSE, (
const char *)0},
{(
const char *)0,
"" , 7, PR_FALSE, (
const char *)0},
{(
const char *)0,
"stuff" , 0, PR_FALSE, (
const char *)0},
{(
const char *)0,
"stuff" , 1, PR_FALSE, (
const char *)0},
{(
const char *)0,
"stuff" , 7, PR_FALSE, (
const char *)0},
{
"" , (
const char *)0, 0, PR_TRUE,
"" },
{
"" , (
const char *)0, 1, PR_TRUE,
"" },
{
"" , (
const char *)0, 7, PR_TRUE,
"" },
{
"" ,
"" , 0, PR_TRUE,
"" },
{
"" ,
"" , 1, PR_TRUE,
"" },
{
"" ,
"" , 7, PR_TRUE,
"" },
{
"" ,
"abcdefgh" , 0, PR_TRUE,
"" },
{
"" ,
"abcdefgh" , 1, PR_FALSE,
"a" },
{
"" ,
"abcdefgh" , 7, PR_FALSE,
"abcdefg" },
{
"xyz" , (
const char *)0, 0, PR_TRUE,
"xyz" },
{
"xyz" , (
const char *)0, 1, PR_TRUE,
"xyz" },
{
"xyz" , (
const char *)0, 7, PR_TRUE,
"xyz" },
{
"xyz" ,
"" , 0, PR_TRUE,
"xyz" },
{
"xyz" ,
"" , 1, PR_TRUE,
"xyz" },
{
"xyz" ,
"" , 7, PR_TRUE,
"xyz" },
{
"xyz" ,
"abcdefgh" , 0, PR_TRUE,
"xyz" },
{
"xyz" ,
"abcdefgh" , 1, PR_FALSE,
"xyza" },
{
"xyz" ,
"abcdefgh" , 7, PR_FALSE,
"xyzabcdefg" }};
int i;
printf(
"Test 009 (PL_strncat) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char buffer[1024];
int j;
char * rv;
for (j = 0; j <
sizeof (buffer); j++) {
buffer[j] =
'-' ;
}
if ((
const char *)0 != array[i].first) {
(
void )PL_strcpy(buffer, array[i].first);
}
rv = PL_strncat(((
const char *)0 == array[i].first) ? (
char *)0 : buffer,
array[i].second, array[i].length);
if ((
const char *)0 == array[i].result) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s+%s/%lu -> %.32s, not zero\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" , array[i].length,
rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s+%s/%lu -> null, not %s\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" , array[i].length,
array[i].result);
return PR_FALSE;
}
else {
const char * a = array[i].result;
const char * b = (
const char *)rv;
while (*a) {
if (*a != *b) {
printf(
"FAIL %d: %s+%s/%lu -> %.32s, not %s\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" ,
array[i].length, rv, array[i].result);
return PR_FALSE;
}
a++;
b++;
}
if (array[i].nulled) {
if ((
char )0 != *b) {
printf(
"FAIL %d: %s+%s/%lu -> not nulled\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" ,
array[i].length);
return PR_FALSE;
}
}
else {
if ((
char )0 == *b) {
printf(
"FAIL %d: %s+%s/%lu -> overrun\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" ,
array[i].length);
return PR_FALSE;
}
}
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strcatn */
PRBool test_010(
void ) {
static struct {
const char * first;
const char * second;
PRUint32 length;
const char * result;
} array[] = {{(
const char *)0, (
const char *)0, 0, (
const char *)0},
{(
const char *)0, (
const char *)0, 1, (
const char *)0},
{(
const char *)0, (
const char *)0, 7, (
const char *)0},
{(
const char *)0,
"" , 0, (
const char *)0},
{(
const char *)0,
"" , 1, (
const char *)0},
{(
const char *)0,
"" , 7, (
const char *)0},
{(
const char *)0,
"stuff" , 0, (
const char *)0},
{(
const char *)0,
"stuff" , 1, (
const char *)0},
{(
const char *)0,
"stuff" , 7, (
const char *)0},
{
"" , (
const char *)0, 0,
"" },
{
"" , (
const char *)0, 1,
"" },
{
"" , (
const char *)0, 7,
"" },
{
"" ,
"" , 0,
"" },
{
"" ,
"" , 1,
"" },
{
"" ,
"" , 7,
"" },
{
"" ,
"abcdefgh" , 0,
"" },
{
"" ,
"abcdefgh" , 1,
"" },
{
"" ,
"abcdefgh" , 7,
"abcdef" },
{
"xyz" , (
const char *)0, 0,
"xyz" },
{
"xyz" , (
const char *)0, 1,
"xyz" },
{
"xyz" , (
const char *)0, 7,
"xyz" },
{
"xyz" ,
"" , 0,
"xyz" },
{
"xyz" ,
"" , 1,
"xyz" },
{
"xyz" ,
"" , 7,
"xyz" },
{
"xyz" ,
"abcdefgh" , 0,
"xyz" },
{
"xyz" ,
"abcdefgh" , 1,
"xyz" },
{
"xyz" ,
"abcdefgh" , 7,
"xyzabc" }};
int i;
printf(
"Test 010 (PL_strcatn) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char buffer[1024];
int j;
char * rv;
for (j = 0; j <
sizeof (buffer); j++) {
buffer[j] =
'-' ;
}
if ((
const char *)0 != array[i].first) {
(
void )PL_strcpy(buffer, array[i].first);
}
rv = PL_strcatn(((
const char *)0 == array[i].first) ? (
char *)0 : buffer,
array[i].length, array[i].second);
if ((
const char *)0 == array[i].result) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s+%s/%lu -> %.32s, not zero\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" , array[i].length,
rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s+%s/%lu -> null, not %s\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" , array[i].length,
array[i].result);
return PR_FALSE;
}
else {
const char * a = array[i].result;
const char * b = (
const char *)rv;
while (1) {
if (*a != *b) {
printf(
"FAIL %d: %s+%s/%lu -> %.32s, not %s\n" , i,
array[i].first ? array[i].first :
"(null)" ,
array[i].second ? array[i].second :
"(null)" ,
array[i].length, rv, array[i].result);
return PR_FALSE;
}
if ((
char )0 == *a) {
break ;
}
a++;
b++;
}
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strcmp */
PRBool test_011(
void ) {
static struct {
const char * one;
const char * two;
PRIntn sign;
} array[] = {{(
const char *)0, (
const char *)0, 0},
{(
const char *)0,
"word" , -1},
{
"word" , (
const char *)0, 1},
{
"word" ,
"word" , 0},
{
"aZYXVUT" ,
"bZYXVUT" , -1},
{
"aZYXVUT" ,
"bAAAAAA" , -1},
{
"a" ,
"aa" , -1},
{
"a" ,
"a" , 0},
{
"a" ,
"A" , 1},
{
"aaaaa" ,
"baaaa" , -1},
{
"aaaaa" ,
"abaaa" , -1},
{
"aaaaa" ,
"aabaa" , -1},
{
"aaaaa" ,
"aaaba" , -1},
{
"aaaaa" ,
"aaaab" , -1},
{
"bZYXVUT" ,
"aZYXVUT" , 1},
{
"bAAAAAA" ,
"aZYXVUT" , 1},
{
"aa" ,
"a" , 1},
{
"A" ,
"a" , -1},
{
"baaaa" ,
"aaaaa" , 1},
{
"abaaa" ,
"aaaaa" , 1},
{
"aabaa" ,
"aaaaa" , 1},
{
"aaaba" ,
"aaaaa" , 1},
{
"aaaab" ,
"aaaaa" , 1},
{
"word" ,
"Word" , 1},
{
"word" ,
"wOrd" , 1},
{
"word" ,
"woRd" , 1},
{
"word" ,
"worD" , 1},
{
"WORD" ,
"wORD" , -1},
{
"WORD" ,
"WoRD" , -1},
{
"WORD" ,
"WOrD" , -1},
{
"WORD" ,
"WORd" , -1}};
int i;
printf(
"Test 011 (PL_strcmp) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
PRIntn rv = PL_strcmp(array[i].one, array[i].two);
switch (array[i].sign) {
case -1:
if (rv < 0) {
continue ;
}
break ;
case 1:
if (rv > 0) {
continue ;
}
break ;
case 0:
if (0 == rv) {
continue ;
}
break ;
default :
PR_NOT_REACHED(
"static data inconsistancy" );
break ;
}
printf(
"FAIL %d: %s-%s -> %d, not %d\n" , i,
array[i].one ? array[i].one :
"(null)" ,
array[i].two ? array[i].two :
"(null)" , rv, array[i].sign);
return PR_FALSE;
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strncmp */
PRBool test_012(
void ) {
static struct {
const char * one;
const char * two;
PRUint32 max;
PRIntn sign;
} array[] = {{(
const char *)0, (
const char *)0, 0, 0},
{(
const char *)0, (
const char *)0, 1, 0},
{(
const char *)0, (
const char *)0, 4, 0},
{(
const char *)0,
"word" , 0, -1},
{(
const char *)0,
"word" , 1, -1},
{(
const char *)0,
"word" , 4, -1},
{
"word" , (
const char *)0, 0, 1},
{
"word" , (
const char *)0, 1, 1},
{
"word" , (
const char *)0, 4, 1},
{
"word" ,
"word" , 0, 0},
{
"word" ,
"word" , 1, 0},
{
"word" ,
"word" , 3, 0},
{
"word" ,
"word" , 5, 0},
{
"aZYXVUT" ,
"bZYXVUT" , 0, 0},
{
"aZYXVUT" ,
"bZYXVUT" , 1, -1},
{
"aZYXVUT" ,
"bZYXVUT" , 4, -1},
{
"aZYXVUT" ,
"bZYXVUT" , 9, -1},
{
"aZYXVUT" ,
"bAAAAAA" , 0, 0},
{
"aZYXVUT" ,
"bAAAAAA" , 1, -1},
{
"aZYXVUT" ,
"bAAAAAA" , 4, -1},
{
"aZYXVUT" ,
"bAAAAAA" , 5, -1},
{
"a" ,
"aa" , 0, 0},
{
"a" ,
"aa" , 1, 0},
{
"a" ,
"aa" , 4, -1},
{
"a" ,
"a" , 0, 0},
{
"a" ,
"a" , 1, 0},
{
"a" ,
"a" , 4, 0},
{
"a" ,
"A" , 0, 0},
{
"a" ,
"A" , 1, 1},
{
"a" ,
"A" , 4, 1},
{
"aaaaa" ,
"baaaa" , 0, 0},
{
"aaaaa" ,
"baaaa" , 1, -1},
{
"aaaaa" ,
"baaaa" , 4, -1},
{
"aaaaa" ,
"abaaa" , 0, 0},
{
"aaaaa" ,
"abaaa" , 1, 0},
{
"aaaaa" ,
"abaaa" , 4, -1},
{
"aaaaa" ,
"aabaa" , 0, 0},
{
"aaaaa" ,
"aabaa" , 1, 0},
{
"aaaaa" ,
"aabaa" , 4, -1},
{
"aaaaa" ,
"aaaba" , 0, 0},
{
"aaaaa" ,
"aaaba" , 1, 0},
{
"aaaaa" ,
"aaaba" , 4, -1},
{
"aaaaa" ,
"aaaab" , 0, 0},
{
"aaaaa" ,
"aaaab" , 1, 0},
{
"aaaaa" ,
"aaaab" , 4, 0},
{
"bZYXVUT" ,
"aZYXVUT" , 0, 0},
{
"bZYXVUT" ,
"aZYXVUT" , 1, 1},
{
"bZYXVUT" ,
"aZYXVUT" , 4, 1},
{
"bAAAAAA" ,
"aZYXVUT" , 0, 0},
{
"bAAAAAA" ,
"aZYXVUT" , 1, 1},
{
"bAAAAAA" ,
"aZYXVUT" , 4, 1},
{
"aa" ,
"a" , 0, 0},
{
"aa" ,
"a" , 1, 0},
{
"aa" ,
"a" , 4, 1},
{
"A" ,
"a" , 0, 0},
{
"A" ,
"a" , 1, -1},
{
"A" ,
"a" , 4, -1},
{
"baaaa" ,
"aaaaa" , 0, 0},
{
"baaaa" ,
"aaaaa" , 1, 1},
{
"baaaa" ,
"aaaaa" , 4, 1},
{
"abaaa" ,
"aaaaa" , 0, 0},
{
"abaaa" ,
"aaaaa" , 1, 0},
{
"abaaa" ,
"aaaaa" , 4, 1},
{
"aabaa" ,
"aaaaa" , 0, 0},
{
"aabaa" ,
"aaaaa" , 1, 0},
{
"aabaa" ,
"aaaaa" , 4, 1},
{
"aaaba" ,
"aaaaa" , 0, 0},
{
"aaaba" ,
"aaaaa" , 1, 0},
{
"aaaba" ,
"aaaaa" , 4, 1},
{
"aaaab" ,
"aaaaa" , 0, 0},
{
"aaaab" ,
"aaaaa" , 1, 0},
{
"aaaab" ,
"aaaaa" , 4, 0},
{
"word" ,
"Word" , 0, 0},
{
"word" ,
"Word" , 1, 1},
{
"word" ,
"Word" , 3, 1},
{
"word" ,
"wOrd" , 0, 0},
{
"word" ,
"wOrd" , 1, 0},
{
"word" ,
"wOrd" , 3, 1},
{
"word" ,
"woRd" , 0, 0},
{
"word" ,
"woRd" , 1, 0},
{
"word" ,
"woRd" , 3, 1},
{
"word" ,
"worD" , 0, 0},
{
"word" ,
"worD" , 1, 0},
{
"word" ,
"worD" , 3, 0},
{
"WORD" ,
"wORD" , 0, 0},
{
"WORD" ,
"wORD" , 1, -1},
{
"WORD" ,
"wORD" , 3, -1},
{
"WORD" ,
"WoRD" , 0, 0},
{
"WORD" ,
"WoRD" , 1, 0},
{
"WORD" ,
"WoRD" , 3, -1},
{
"WORD" ,
"WOrD" , 0, 0},
{
"WORD" ,
"WOrD" , 1, 0},
{
"WORD" ,
"WOrD" , 3, -1},
{
"WORD" ,
"WORd" , 0, 0},
{
"WORD" ,
"WORd" , 1, 0},
{
"WORD" ,
"WORd" , 3, 0}
};
int i;
printf(
"Test 012 (PL_strncmp) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
PRIntn rv = PL_strncmp(array[i].one, array[i].two, array[i].max);
switch (array[i].sign) {
case -1:
if (rv < 0) {
continue ;
}
break ;
case 1:
if (rv > 0) {
continue ;
}
break ;
case 0:
if (0 == rv) {
continue ;
}
break ;
default :
PR_NOT_REACHED(
"static data inconsistancy" );
break ;
}
printf(
"FAIL %d: %s-%s/%ld -> %d, not %d\n" , i,
array[i].one ? array[i].one :
"(null)" ,
array[i].two ? array[i].two :
"(null)" , array[i].max, rv,
array[i].sign);
return PR_FALSE;
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strcasecmp */
PRBool test_013(
void ) {
static struct {
const char * one;
const char * two;
PRIntn sign;
} array[] = {{(
const char *)0, (
const char *)0, 0},
{(
const char *)0,
"word" , -1},
{
"word" , (
const char *)0, 1},
{
"word" ,
"word" , 0},
{
"aZYXVUT" ,
"bZYXVUT" , -1},
{
"aZYXVUT" ,
"bAAAAAA" , -1},
{
"a" ,
"aa" , -1},
{
"a" ,
"a" , 0},
{
"a" ,
"A" , 0},
{
"aaaaa" ,
"baaaa" , -1},
{
"aaaaa" ,
"abaaa" , -1},
{
"aaaaa" ,
"aabaa" , -1},
{
"aaaaa" ,
"aaaba" , -1},
{
"aaaaa" ,
"aaaab" , -1},
{
"bZYXVUT" ,
"aZYXVUT" , 1},
{
"bAAAAAA" ,
"aZYXVUT" , 1},
{
"aa" ,
"a" , 1},
{
"A" ,
"a" , 0},
{
"baaaa" ,
"aaaaa" , 1},
{
"abaaa" ,
"aaaaa" , 1},
{
"aabaa" ,
"aaaaa" , 1},
{
"aaaba" ,
"aaaaa" , 1},
{
"aaaab" ,
"aaaaa" , 1},
{
"word" ,
"Word" , 0},
{
"word" ,
"wOrd" , 0},
{
"word" ,
"woRd" , 0},
{
"word" ,
"worD" , 0},
{
"WORD" ,
"wORD" , 0},
{
"WORD" ,
"WoRD" , 0},
{
"WORD" ,
"WOrD" , 0},
{
"WORD" ,
"WORd" , 0}};
int i;
printf(
"Test 013 (PL_strcasecmp) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
PRIntn rv = PL_strcasecmp(array[i].one, array[i].two);
switch (array[i].sign) {
case -1:
if (rv < 0) {
continue ;
}
break ;
case 1:
if (rv > 0) {
continue ;
}
break ;
case 0:
if (0 == rv) {
continue ;
}
break ;
default :
PR_NOT_REACHED(
"static data inconsistancy" );
break ;
}
printf(
"FAIL %d: %s-%s -> %d, not %d\n" , i,
array[i].one ? array[i].one :
"(null)" ,
array[i].two ? array[i].two :
"(null)" , rv, array[i].sign);
return PR_FALSE;
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strncasecmp */
PRBool test_014(
void ) {
static struct {
const char * one;
const char * two;
PRUint32 max;
PRIntn sign;
} array[] = {{(
const char *)0, (
const char *)0, 0, 0},
{(
const char *)0, (
const char *)0, 1, 0},
{(
const char *)0, (
const char *)0, 4, 0},
{(
const char *)0,
"word" , 0, -1},
{(
const char *)0,
"word" , 1, -1},
{(
const char *)0,
"word" , 4, -1},
{
"word" , (
const char *)0, 0, 1},
{
"word" , (
const char *)0, 1, 1},
{
"word" , (
const char *)0, 4, 1},
{
"word" ,
"word" , 0, 0},
{
"word" ,
"word" , 1, 0},
{
"word" ,
"word" , 3, 0},
{
"word" ,
"word" , 5, 0},
{
"aZYXVUT" ,
"bZYXVUT" , 0, 0},
{
"aZYXVUT" ,
"bZYXVUT" , 1, -1},
{
"aZYXVUT" ,
"bZYXVUT" , 4, -1},
{
"aZYXVUT" ,
"bZYXVUT" , 9, -1},
{
"aZYXVUT" ,
"bAAAAAA" , 0, 0},
{
"aZYXVUT" ,
"bAAAAAA" , 1, -1},
{
"aZYXVUT" ,
"bAAAAAA" , 4, -1},
{
"aZYXVUT" ,
"bAAAAAA" , 5, -1},
{
"a" ,
"aa" , 0, 0},
{
"a" ,
"aa" , 1, 0},
{
"a" ,
"aa" , 4, -1},
{
"a" ,
"a" , 0, 0},
{
"a" ,
"a" , 1, 0},
{
"a" ,
"a" , 4, 0},
{
"a" ,
"A" , 0, 0},
{
"a" ,
"A" , 1, 0},
{
"a" ,
"A" , 4, 0},
{
"aaaaa" ,
"baaaa" , 0, 0},
{
"aaaaa" ,
"baaaa" , 1, -1},
{
"aaaaa" ,
"baaaa" , 4, -1},
{
"aaaaa" ,
"abaaa" , 0, 0},
{
"aaaaa" ,
"abaaa" , 1, 0},
{
"aaaaa" ,
"abaaa" , 4, -1},
{
"aaaaa" ,
"aabaa" , 0, 0},
{
"aaaaa" ,
"aabaa" , 1, 0},
{
"aaaaa" ,
"aabaa" , 4, -1},
{
"aaaaa" ,
"aaaba" , 0, 0},
{
"aaaaa" ,
"aaaba" , 1, 0},
{
"aaaaa" ,
"aaaba" , 4, -1},
{
"aaaaa" ,
"aaaab" , 0, 0},
{
"aaaaa" ,
"aaaab" , 1, 0},
{
"aaaaa" ,
"aaaab" , 4, 0},
{
"bZYXVUT" ,
"aZYXVUT" , 0, 0},
{
"bZYXVUT" ,
"aZYXVUT" , 1, 1},
{
"bZYXVUT" ,
"aZYXVUT" , 4, 1},
{
"bAAAAAA" ,
"aZYXVUT" , 0, 0},
{
"bAAAAAA" ,
"aZYXVUT" , 1, 1},
{
"bAAAAAA" ,
"aZYXVUT" , 4, 1},
{
"aa" ,
"a" , 0, 0},
{
"aa" ,
"a" , 1, 0},
{
"aa" ,
"a" , 4, 1},
{
"A" ,
"a" , 0, 0},
{
"A" ,
"a" , 1, 0},
{
"A" ,
"a" , 4, 0},
{
"baaaa" ,
"aaaaa" , 0, 0},
{
"baaaa" ,
"aaaaa" , 1, 1},
{
"baaaa" ,
"aaaaa" , 4, 1},
{
"abaaa" ,
"aaaaa" , 0, 0},
{
"abaaa" ,
"aaaaa" , 1, 0},
{
"abaaa" ,
"aaaaa" , 4, 1},
{
"aabaa" ,
"aaaaa" , 0, 0},
{
"aabaa" ,
"aaaaa" , 1, 0},
{
"aabaa" ,
"aaaaa" , 4, 1},
{
"aaaba" ,
"aaaaa" , 0, 0},
{
"aaaba" ,
"aaaaa" , 1, 0},
{
"aaaba" ,
"aaaaa" , 4, 1},
{
"aaaab" ,
"aaaaa" , 0, 0},
{
"aaaab" ,
"aaaaa" , 1, 0},
{
"aaaab" ,
"aaaaa" , 4, 0},
{
"word" ,
"Word" , 0, 0},
{
"word" ,
"Word" , 1, 0},
{
"word" ,
"Word" , 3, 0},
{
"word" ,
"wOrd" , 0, 0},
{
"word" ,
"wOrd" , 1, 0},
{
"word" ,
"wOrd" , 3, 0},
{
"word" ,
"woRd" , 0, 0},
{
"word" ,
"woRd" , 1, 0},
{
"word" ,
"woRd" , 3, 0},
{
"word" ,
"worD" , 0, 0},
{
"word" ,
"worD" , 1, 0},
{
"word" ,
"worD" , 3, 0},
{
"WORD" ,
"wORD" , 0, 0},
{
"WORD" ,
"wORD" , 1, 0},
{
"WORD" ,
"wORD" , 3, 0},
{
"WORD" ,
"WoRD" , 0, 0},
{
"WORD" ,
"WoRD" , 1, 0},
{
"WORD" ,
"WoRD" , 3, 0},
{
"WORD" ,
"WOrD" , 0, 0},
{
"WORD" ,
"WOrD" , 1, 0},
{
"WORD" ,
"WOrD" , 3, 0},
{
"WORD" ,
"WORd" , 0, 0},
{
"WORD" ,
"WORd" , 1, 0},
{
"WORD" ,
"WORd" , 3, 0}};
int i;
printf(
"Test 014 (PL_strncasecmp) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
PRIntn rv = PL_strncasecmp(array[i].one, array[i].two, array[i].max);
switch (array[i].sign) {
case -1:
if (rv < 0) {
continue ;
}
break ;
case 1:
if (rv > 0) {
continue ;
}
break ;
case 0:
if (0 == rv) {
continue ;
}
break ;
default :
PR_NOT_REACHED(
"static data inconsistancy" );
break ;
}
printf(
"FAIL %d: %s-%s/%ld -> %d, not %d\n" , i,
array[i].one ? array[i].one :
"(null)" ,
array[i].two ? array[i].two :
"(null)" , array[i].max, rv,
array[i].sign);
return PR_FALSE;
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strchr */
PRBool test_015(
void ) {
static struct {
const char * str;
char chr;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0,
'a' , PR_FALSE, 0},
{(
const char *)0,
'\0' , PR_FALSE, 0},
{
"abcdefg" ,
'a' , PR_TRUE, 0},
{
"abcdefg" ,
'b' , PR_TRUE, 1},
{
"abcdefg" ,
'c' , PR_TRUE, 2},
{
"abcdefg" ,
'd' , PR_TRUE, 3},
{
"abcdefg" ,
'e' , PR_TRUE, 4},
{
"abcdefg" ,
'f' , PR_TRUE, 5},
{
"abcdefg" ,
'g' , PR_TRUE, 6},
{
"abcdefg" ,
'h' , PR_FALSE, 0},
{
"abcdefg" ,
'\0' , PR_TRUE, 7},
{
"abcdefg" ,
'A' , PR_FALSE, 0},
{
"abcdefg" ,
'B' , PR_FALSE, 0},
{
"abcdefg" ,
'C' , PR_FALSE, 0},
{
"abcdefg" ,
'D' , PR_FALSE, 0},
{
"abcdefg" ,
'E' , PR_FALSE, 0},
{
"abcdefg" ,
'F' , PR_FALSE, 0},
{
"abcdefg" ,
'G' , PR_FALSE, 0},
{
"abcdefg" ,
'H' , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'a' , PR_TRUE, 0},
{
"abcdefgabcdefg" ,
'b' , PR_TRUE, 1},
{
"abcdefgabcdefg" ,
'c' , PR_TRUE, 2},
{
"abcdefgabcdefg" ,
'd' , PR_TRUE, 3},
{
"abcdefgabcdefg" ,
'e' , PR_TRUE, 4},
{
"abcdefgabcdefg" ,
'f' , PR_TRUE, 5},
{
"abcdefgabcdefg" ,
'g' , PR_TRUE, 6},
{
"abcdefgabcdefg" ,
'h' , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'\0' , PR_TRUE, 14}};
int i;
printf(
"Test 015 (PL_strchr) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strchr(array[i].str, array[i].chr);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%c -> %.32s, not zero\n" , i, array[i].str,
array[i].chr, rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%c -> null, not +%lu\n" , i, array[i].str,
array[i].chr, array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%c -> 0x%x, not 0x%x+%lu\n" , i, array[i].str,
array[i].chr, rv, array[i].str, array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strrchr */
PRBool test_016(
void ) {
static struct {
const char * str;
char chr;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0,
'a' , PR_FALSE, 0},
{(
const char *)0,
'\0' , PR_FALSE, 0},
{
"abcdefg" ,
'a' , PR_TRUE, 0},
{
"abcdefg" ,
'b' , PR_TRUE, 1},
{
"abcdefg" ,
'c' , PR_TRUE, 2},
{
"abcdefg" ,
'd' , PR_TRUE, 3},
{
"abcdefg" ,
'e' , PR_TRUE, 4},
{
"abcdefg" ,
'f' , PR_TRUE, 5},
{
"abcdefg" ,
'g' , PR_TRUE, 6},
{
"abcdefg" ,
'h' , PR_FALSE, 0},
{
"abcdefg" ,
'\0' , PR_TRUE, 7},
{
"abcdefg" ,
'A' , PR_FALSE, 0},
{
"abcdefg" ,
'B' , PR_FALSE, 0},
{
"abcdefg" ,
'C' , PR_FALSE, 0},
{
"abcdefg" ,
'D' , PR_FALSE, 0},
{
"abcdefg" ,
'E' , PR_FALSE, 0},
{
"abcdefg" ,
'F' , PR_FALSE, 0},
{
"abcdefg" ,
'G' , PR_FALSE, 0},
{
"abcdefg" ,
'H' , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'a' , PR_TRUE, 7},
{
"abcdefgabcdefg" ,
'b' , PR_TRUE, 8},
{
"abcdefgabcdefg" ,
'c' , PR_TRUE, 9},
{
"abcdefgabcdefg" ,
'd' , PR_TRUE, 10},
{
"abcdefgabcdefg" ,
'e' , PR_TRUE, 11},
{
"abcdefgabcdefg" ,
'f' , PR_TRUE, 12},
{
"abcdefgabcdefg" ,
'g' , PR_TRUE, 13},
{
"abcdefgabcdefg" ,
'h' , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'\0' , PR_TRUE, 14}};
int i;
printf(
"Test 016 (PL_strrchr) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strrchr(array[i].str, array[i].chr);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%c -> %.32s, not zero\n" , i, array[i].str,
array[i].chr, rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%c -> null, not +%lu\n" , i, array[i].str,
array[i].chr, array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%c -> 0x%x, not 0x%x+%lu\n" , i, array[i].str,
array[i].chr, rv, array[i].str, array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strnchr */
PRBool test_017(
void ) {
static struct {
const char * str;
char chr;
PRUint32 max;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0,
'a' , 2, PR_FALSE, 0},
{(
const char *)0,
'\0' , 2, PR_FALSE, 0},
{
"abcdefg" ,
'a' , 5, PR_TRUE, 0},
{
"abcdefg" ,
'b' , 5, PR_TRUE, 1},
{
"abcdefg" ,
'c' , 5, PR_TRUE, 2},
{
"abcdefg" ,
'd' , 5, PR_TRUE, 3},
{
"abcdefg" ,
'e' , 5, PR_TRUE, 4},
{
"abcdefg" ,
'f' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'g' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'h' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'\0' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'\0' , 15, PR_TRUE, 7},
{
"abcdefg" ,
'A' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'B' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'C' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'D' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'E' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'F' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'G' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'H' , 5, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'a' , 10, PR_TRUE, 0},
{
"abcdefgabcdefg" ,
'b' , 10, PR_TRUE, 1},
{
"abcdefgabcdefg" ,
'c' , 10, PR_TRUE, 2},
{
"abcdefgabcdefg" ,
'd' , 10, PR_TRUE, 3},
{
"abcdefgabcdefg" ,
'e' , 10, PR_TRUE, 4},
{
"abcdefgabcdefg" ,
'f' , 10, PR_TRUE, 5},
{
"abcdefgabcdefg" ,
'g' , 10, PR_TRUE, 6},
{
"abcdefgabcdefg" ,
'h' , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'\0' , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'\0' , 14, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'\0' , 15, PR_TRUE, 14}};
int i;
printf(
"Test 017 (PL_strnchr) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strnchr(array[i].str, array[i].chr, array[i].max);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%c/%lu -> %.32s, not zero\n" , i, array[i].str,
array[i].chr, array[i].max, rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%c/%lu -> null, not +%lu\n" , i, array[i].str,
array[i].chr, array[i].max, array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%c/%lu -> 0x%x, not 0x%x+%lu\n" , i, array[i].str,
array[i].chr, array[i].max, rv, array[i].str, array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strnrchr */
PRBool test_018(
void ) {
static struct {
const char * str;
char chr;
PRUint32 max;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0,
'a' , 2, PR_FALSE, 0},
{(
const char *)0,
'\0' , 2, PR_FALSE, 0},
{
"abcdefg" ,
'a' , 5, PR_TRUE, 0},
{
"abcdefg" ,
'b' , 5, PR_TRUE, 1},
{
"abcdefg" ,
'c' , 5, PR_TRUE, 2},
{
"abcdefg" ,
'd' , 5, PR_TRUE, 3},
{
"abcdefg" ,
'e' , 5, PR_TRUE, 4},
{
"abcdefg" ,
'f' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'g' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'h' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'\0' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'\0' , 15, PR_TRUE, 7},
{
"abcdefg" ,
'A' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'B' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'C' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'D' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'E' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'F' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'G' , 5, PR_FALSE, 0},
{
"abcdefg" ,
'H' , 5, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'a' , 10, PR_TRUE, 7},
{
"abcdefgabcdefg" ,
'b' , 10, PR_TRUE, 8},
{
"abcdefgabcdefg" ,
'c' , 10, PR_TRUE, 9},
{
"abcdefgabcdefg" ,
'd' , 10, PR_TRUE, 3},
{
"abcdefgabcdefg" ,
'e' , 10, PR_TRUE, 4},
{
"abcdefgabcdefg" ,
'f' , 10, PR_TRUE, 5},
{
"abcdefgabcdefg" ,
'g' , 10, PR_TRUE, 6},
{
"abcdefgabcdefg" ,
'h' , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'\0' , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'\0' , 14, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
'\0' , 15, PR_TRUE, 14}};
int i;
printf(
"Test 018 (PL_strnrchr) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strnrchr(array[i].str, array[i].chr, array[i].max);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%c/%lu -> %.32s, not zero\n" , i, array[i].str,
array[i].chr, array[i].max, rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%c/%lu -> null, not +%lu\n" , i, array[i].str,
array[i].chr, array[i].max, array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%c/%lu -> 0x%x, not 0x%x+%lu\n" , i, array[i].str,
array[i].chr, array[i].max, rv, array[i].str, array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strpbrk */
PRBool test_019(
void ) {
static struct {
const char * str;
const char * chrs;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0, (
const char *)0, PR_FALSE, 0},
{(
const char *)0,
"abc" , PR_FALSE, 0},
{
"abc" , (
const char *)0, PR_FALSE, 0},
{
"abcdefg" ,
"" , PR_FALSE, 0},
{
"" ,
"aeiou" , PR_FALSE, 0},
{
"abcdefg" ,
"ae" , PR_TRUE, 0},
{
"abcdefg" ,
"ei" , PR_TRUE, 4},
{
"abcdefg" ,
"io" , PR_FALSE, 0},
{
"abcdefg" ,
"bcd" , PR_TRUE, 1},
{
"abcdefg" ,
"cbd" , PR_TRUE, 1},
{
"abcdefg" ,
"dbc" , PR_TRUE, 1},
{
"abcdefg" ,
"ghi" , PR_TRUE, 6},
{
"abcdefg" ,
"AE" , PR_FALSE, 0},
{
"abcdefg" ,
"EI" , PR_FALSE, 0},
{
"abcdefg" ,
"IO" , PR_FALSE, 0},
{
"abcdefg" ,
"BCD" , PR_FALSE, 0},
{
"abcdefg" ,
"CBD" , PR_FALSE, 0},
{
"abcdefg" ,
"DBC" , PR_FALSE, 0},
{
"abcdefg" ,
"GHI" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"ae" , PR_TRUE, 0},
{
"abcdefgabcdefg" ,
"ei" , PR_TRUE, 4},
{
"abcdefgabcdefg" ,
"io" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"bcd" , PR_TRUE, 1},
{
"abcdefgabcdefg" ,
"cbd" , PR_TRUE, 1},
{
"abcdefgabcdefg" ,
"dbc" , PR_TRUE, 1},
{
"abcdefgabcdefg" ,
"ghi" , PR_TRUE, 6},
{
"abcdefgabcdefg" ,
"AE" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"EI" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"IO" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"BCD" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"CBD" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"DBC" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"GHI" , PR_FALSE, 0}};
int i;
printf(
"Test 019 (PL_strpbrk) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strpbrk(array[i].str, array[i].chrs);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%s -> %.32s, not null\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%s -> null, not +%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%s -> 0x%x, not 0x%x+%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , rv, array[i].str,
array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strprbrk */
PRBool test_020(
void ) {
static struct {
const char * str;
const char * chrs;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0, (
const char *)0, PR_FALSE, 0},
{(
const char *)0,
"abc" , PR_FALSE, 0},
{
"abc" , (
const char *)0, PR_FALSE, 0},
{
"abcdefg" ,
"" , PR_FALSE, 0},
{
"" ,
"aeiou" , PR_FALSE, 0},
{
"abcdefg" ,
"ae" , PR_TRUE, 4},
{
"abcdefg" ,
"ei" , PR_TRUE, 4},
{
"abcdefg" ,
"io" , PR_FALSE, 0},
{
"abcdefg" ,
"bcd" , PR_TRUE, 3},
{
"abcdefg" ,
"cbd" , PR_TRUE, 3},
{
"abcdefg" ,
"dbc" , PR_TRUE, 3},
{
"abcdefg" ,
"ghi" , PR_TRUE, 6},
{
"abcdefg" ,
"AE" , PR_FALSE, 0},
{
"abcdefg" ,
"EI" , PR_FALSE, 0},
{
"abcdefg" ,
"IO" , PR_FALSE, 0},
{
"abcdefg" ,
"BCD" , PR_FALSE, 0},
{
"abcdefg" ,
"CBD" , PR_FALSE, 0},
{
"abcdefg" ,
"DBC" , PR_FALSE, 0},
{
"abcdefg" ,
"GHI" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"ae" , PR_TRUE, 11},
{
"abcdefgabcdefg" ,
"ei" , PR_TRUE, 11},
{
"abcdefgabcdefg" ,
"io" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"bcd" , PR_TRUE, 10},
{
"abcdefgabcdefg" ,
"cbd" , PR_TRUE, 10},
{
"abcdefgabcdefg" ,
"dbc" , PR_TRUE, 10},
{
"abcdefgabcdefg" ,
"ghi" , PR_TRUE, 13},
{
"abcdefgabcdefg" ,
"AE" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"EI" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"IO" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"BCD" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"CBD" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"DBC" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"GHI" , PR_FALSE, 0}};
int i;
printf(
"Test 020 (PL_strprbrk) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strprbrk(array[i].str, array[i].chrs);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%s -> %.32s, not null\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%s -> null, not +%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%s -> 0x%x, not 0x%x+%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , rv, array[i].str,
array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strnpbrk */
PRBool test_021(
void ) {
static struct {
const char * str;
const char * chrs;
PRUint32 max;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0, (
const char *)0, 3, PR_FALSE, 0},
{(
const char *)0,
"abc" , 3, PR_FALSE, 0},
{
"abc" , (
const char *)0, 3, PR_FALSE, 0},
{
"abcdefg" ,
"" , 3, PR_FALSE, 0},
{
"" ,
"aeiou" , 3, PR_FALSE, 0},
{
"abcdefg" ,
"ae" , 0, PR_FALSE, 0},
{
"abcdefg" ,
"ae" , 1, PR_TRUE, 0},
{
"abcdefg" ,
"ae" , 4, PR_TRUE, 0},
{
"abcdefg" ,
"ae" , 5, PR_TRUE, 0},
{
"abcdefg" ,
"ae" , 6, PR_TRUE, 0},
{
"abcdefg" ,
"ei" , 4, PR_FALSE, 0},
{
"abcdefg" ,
"io" , 10, PR_FALSE, 0},
{
"abcdefg" ,
"bcd" , 2, PR_TRUE, 1},
{
"abcdefg" ,
"cbd" , 2, PR_TRUE, 1},
{
"abcdefg" ,
"dbc" , 2, PR_TRUE, 1},
{
"abcdefg" ,
"ghi" , 6, PR_FALSE, 0},
{
"abcdefg" ,
"ghi" , 7, PR_TRUE, 6},
{
"abcdefg" ,
"AE" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"EI" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"IO" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"BCD" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"CBD" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"DBC" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"GHI" , 9, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"ae" , 10, PR_TRUE, 0},
{
"abcdefgabcdefg" ,
"ei" , 10, PR_TRUE, 4},
{
"abcdefgabcdefg" ,
"io" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"bcd" , 10, PR_TRUE, 1},
{
"abcdefgabcdefg" ,
"cbd" , 10, PR_TRUE, 1},
{
"abcdefgabcdefg" ,
"dbc" , 10, PR_TRUE, 1},
{
"abcdefgabcdefg" ,
"ghi" , 10, PR_TRUE, 6},
{
"abcdefgabcdefg" ,
"AE" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"EI" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"IO" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"BCD" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"CBD" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"DBC" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"GHI" , 10, PR_FALSE, 0}};
int i;
printf(
"Test 021 (PL_strnpbrk) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strnpbrk(array[i].str, array[i].chrs, array[i].max);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%s/%lu -> %.32s, not null\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , array[i].max, rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%s/%lu -> null, not +%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , array[i].max,
array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%s/%lu -> 0x%x, not 0x%x+%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , array[i].max, rv,
array[i].str, array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strnprbrk */
PRBool test_022(
void ) {
static struct {
const char * str;
const char * chrs;
PRUint32 max;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0, (
const char *)0, 3, PR_FALSE, 0},
{(
const char *)0,
"abc" , 3, PR_FALSE, 0},
{
"abc" , (
const char *)0, 3, PR_FALSE, 0},
{
"abcdefg" ,
"" , 3, PR_FALSE, 0},
{
"" ,
"aeiou" , 3, PR_FALSE, 0},
{
"abcdefg" ,
"ae" , 0, PR_FALSE, 0},
{
"abcdefg" ,
"ae" , 1, PR_TRUE, 0},
{
"abcdefg" ,
"ae" , 4, PR_TRUE, 0},
{
"abcdefg" ,
"ae" , 5, PR_TRUE, 4},
{
"abcdefg" ,
"ae" , 6, PR_TRUE, 4},
{
"abcdefg" ,
"ei" , 4, PR_FALSE, 0},
{
"abcdefg" ,
"io" , 10, PR_FALSE, 0},
{
"abcdefg" ,
"bcd" , 2, PR_TRUE, 1},
{
"abcdefg" ,
"cbd" , 2, PR_TRUE, 1},
{
"abcdefg" ,
"dbc" , 2, PR_TRUE, 1},
{
"abcdefg" ,
"bcd" , 3, PR_TRUE, 2},
{
"abcdefg" ,
"cbd" , 3, PR_TRUE, 2},
{
"abcdefg" ,
"dbc" , 3, PR_TRUE, 2},
{
"abcdefg" ,
"bcd" , 5, PR_TRUE, 3},
{
"abcdefg" ,
"cbd" , 5, PR_TRUE, 3},
{
"abcdefg" ,
"dbc" , 5, PR_TRUE, 3},
{
"abcdefg" ,
"bcd" , 15, PR_TRUE, 3},
{
"abcdefg" ,
"cbd" , 15, PR_TRUE, 3},
{
"abcdefg" ,
"dbc" , 15, PR_TRUE, 3},
{
"abcdefg" ,
"ghi" , 6, PR_FALSE, 0},
{
"abcdefg" ,
"ghi" , 7, PR_TRUE, 6},
{
"abcdefg" ,
"AE" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"EI" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"IO" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"BCD" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"CBD" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"DBC" , 9, PR_FALSE, 0},
{
"abcdefg" ,
"GHI" , 9, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"ae" , 10, PR_TRUE, 7},
{
"abcdefgabcdefg" ,
"ei" , 10, PR_TRUE, 4},
{
"abcdefgabcdefg" ,
"io" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"bcd" , 10, PR_TRUE, 9},
{
"abcdefgabcdefg" ,
"cbd" , 10, PR_TRUE, 9},
{
"abcdefgabcdefg" ,
"dbc" , 10, PR_TRUE, 9},
{
"abcdefgabcdefg" ,
"ghi" , 10, PR_TRUE, 6},
{
"abcdefgabcdefg" ,
"AE" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"EI" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"IO" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"BCD" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"CBD" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"DBC" , 10, PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"GHI" , 10, PR_FALSE, 0}};
int i;
printf(
"Test 022 (PL_strnprbrk) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strnprbrk(array[i].str, array[i].chrs, array[i].max);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%s/%lu -> %.32s, not null\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , array[i].max, rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%s/%lu -> null, not +%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , array[i].max,
array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%s/%lu -> 0x%x, not 0x%x+%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].chrs ? array[i].chrs :
"(null)" , array[i].max, rv,
array[i].str, array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strstr */
PRBool test_023(
void ) {
static struct {
const char * str;
const char * sub;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0, (
const char *)0, PR_FALSE, 0},
{(
const char *)0,
"blah" , PR_FALSE, 0},
{
"blah-de-blah" , (
const char *)0, PR_FALSE, 0},
{
"blah-de-blah" ,
"blah" , PR_TRUE, 0},
{
"" ,
"blah" , PR_FALSE, 0},
{
"blah-de-blah" ,
"" , PR_FALSE, 0},
{
"abcdefg" ,
"a" , PR_TRUE, 0},
{
"abcdefg" ,
"c" , PR_TRUE, 2},
{
"abcdefg" ,
"e" , PR_TRUE, 4},
{
"abcdefg" ,
"g" , PR_TRUE, 6},
{
"abcdefg" ,
"i" , PR_FALSE, 0},
{
"abcdefg" ,
"ab" , PR_TRUE, 0},
{
"abcdefg" ,
"cd" , PR_TRUE, 2},
{
"abcdefg" ,
"ef" , PR_TRUE, 4},
{
"abcdefg" ,
"gh" , PR_FALSE, 0},
{
"abcdabc" ,
"bc" , PR_TRUE, 1},
{
"abcdefg" ,
"abcdefg" , PR_TRUE, 0},
{
"abcdefgabcdefg" ,
"a" , PR_TRUE, 0},
{
"abcdefgabcdefg" ,
"c" , PR_TRUE, 2},
{
"abcdefgabcdefg" ,
"e" , PR_TRUE, 4},
{
"abcdefgabcdefg" ,
"g" , PR_TRUE, 6},
{
"abcdefgabcdefg" ,
"i" , PR_FALSE, 0},
{
"abcdefgabcdefg" ,
"ab" , PR_TRUE, 0},
{
"abcdefgabcdefg" ,
"cd" , PR_TRUE, 2},
{
"abcdefgabcdefg" ,
"ef" , PR_TRUE, 4},
{
"abcdefgabcdefg" ,
"gh" , PR_FALSE, 0},
{
"abcdabcabcdabc" ,
"bc" , PR_TRUE, 1},
{
"abcdefgabcdefg" ,
"abcdefg" , PR_TRUE, 0},
{
"ABCDEFG" ,
"a" , PR_FALSE, 0},
{
"ABCDEFG" ,
"c" , PR_FALSE, 0},
{
"ABCDEFG" ,
"e" , PR_FALSE, 0},
{
"ABCDEFG" ,
"g" , PR_FALSE, 0},
{
"ABCDEFG" ,
"i" , PR_FALSE, 0},
{
"ABCDEFG" ,
"ab" , PR_FALSE, 0},
{
"ABCDEFG" ,
"cd" , PR_FALSE, 0},
{
"ABCDEFG" ,
"ef" , PR_FALSE, 0},
{
"ABCDEFG" ,
"gh" , PR_FALSE, 0},
{
"ABCDABC" ,
"bc" , PR_FALSE, 0},
{
"ABCDEFG" ,
"abcdefg" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"a" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"c" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"e" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"g" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"i" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"ab" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"cd" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"ef" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"gh" , PR_FALSE, 0},
{
"ABCDABCABCDABC" ,
"bc" , PR_FALSE, 0},
{
"ABCDEFGABCDEFG" ,
"abcdefg" , PR_FALSE, 0}};
int i;
printf(
"Test 023 (PL_strstr) ..." );
fflush(stdout);
for (i = 0; i <
sizeof (array) /
sizeof (array[0]); i++) {
char * rv = PL_strstr(array[i].str, array[i].sub);
if (PR_FALSE == array[i].ret) {
if ((
char *)0 != rv) {
printf(
"FAIL %d: %s,%s -> %.32s, not null\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].sub ? array[i].sub :
"(null)" , rv);
return PR_FALSE;
}
}
else {
if ((
char *)0 == rv) {
printf(
"FAIL %d: %s,%s -> null, not 0x%x+%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].sub ? array[i].sub :
"(null)" , array[i].str,
array[i].off);
return PR_FALSE;
}
if (&array[i].str[array[i].off] != rv) {
printf(
"FAIL %d: %s,%s -> 0x%x, not 0x%x+%lu\n" , i,
array[i].str ? array[i].str :
"(null)" ,
array[i].sub ? array[i].sub :
"(null)" , rv, array[i].str,
array[i].off);
return PR_FALSE;
}
}
}
printf(
"PASS\n" );
return PR_TRUE;
}
/* PL_strrstr */
PRBool test_024(
void ) {
static struct {
const char * str;
const char * sub;
PRBool ret;
PRUint32 off;
} array[] = {{(
const char *)0, (
const char *)0, PR_FALSE, 0},
{(
const char *)0,
"blah" , PR_FALSE, 0},
{
"blah-de-blah" , (
const char *)0, PR_FALSE, 0},
{
"blah-de-blah" ,
"blah" , PR_TRUE, 8},
{
"" ,
"blah" , PR_FALSE, 0},
{
"blah-de-blah" ,
"" , PR_FALSE, 0},
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5 C=94 H=95 G=94
¤ Dauer der Verarbeitung: 0.35 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland