|
Packit |
40b132 |
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
Packit |
40b132 |
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
Packit |
40b132 |
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
Packit |
40b132 |
/*
|
|
Packit |
40b132 |
* test_list.c
|
|
Packit |
40b132 |
*
|
|
Packit |
40b132 |
* Tests List Objects
|
|
Packit |
40b132 |
*
|
|
Packit |
40b132 |
*/
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
#include "testutil.h"
|
|
Packit |
40b132 |
#include "testutil_nss.h"
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void *plContext = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
createLists(PKIX_List **list, PKIX_List **list2)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(list, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(list2, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testReverseList(void)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_List *firstList = NULL;
|
|
Packit |
40b132 |
PKIX_List *reverseList = NULL;
|
|
Packit |
40b132 |
PKIX_UInt32 length, i;
|
|
Packit |
40b132 |
char *testItemString = "one";
|
|
Packit |
40b132 |
char *testItemString2 = "two";
|
|
Packit |
40b132 |
PKIX_PL_String *testItem = NULL;
|
|
Packit |
40b132 |
PKIX_PL_String *testItem2 = NULL;
|
|
Packit |
40b132 |
PKIX_PL_Object *retrievedItem1 = NULL;
|
|
Packit |
40b132 |
PKIX_PL_Object *retrievedItem2 = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&firstList, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_ReverseList
|
|
Packit |
40b132 |
(firstList, &reverseList, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetLength
|
|
Packit |
40b132 |
(reverseList, &length, plContext));
|
|
Packit |
40b132 |
if (length != 0){
|
|
Packit |
40b132 |
testError("Incorrect Length returned");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(reverseList);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString,
|
|
Packit |
40b132 |
0,
|
|
Packit |
40b132 |
&testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString2,
|
|
Packit |
40b132 |
0,
|
|
Packit |
40b132 |
&testItem2,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(firstList,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_ReverseList
|
|
Packit |
40b132 |
(firstList, &reverseList, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetLength
|
|
Packit |
40b132 |
(reverseList, &length, plContext));
|
|
Packit |
40b132 |
if (length != 1){
|
|
Packit |
40b132 |
testError("Incorrect Length returned");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(reverseList);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(firstList,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem2,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(firstList,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(firstList,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem2,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_ReverseList
|
|
Packit |
40b132 |
(firstList, &reverseList, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetLength
|
|
Packit |
40b132 |
(reverseList, &length, plContext));
|
|
Packit |
40b132 |
if (length != 4){
|
|
Packit |
40b132 |
testError("Incorrect Length returned");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
for (i = 0; i < length; i++){
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetItem
|
|
Packit |
40b132 |
(firstList,
|
|
Packit |
40b132 |
i,
|
|
Packit |
40b132 |
&retrievedItem1,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetItem
|
|
Packit |
40b132 |
(reverseList,
|
|
Packit |
40b132 |
(length - 1) - i,
|
|
Packit |
40b132 |
&retrievedItem2,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
testEqualsHelper
|
|
Packit |
40b132 |
(retrievedItem1, retrievedItem2, PKIX_TRUE, plContext);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(retrievedItem1);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(retrievedItem2);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_AC(firstList);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_AC(reverseList);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_AC(testItem);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_AC(testItem2);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_AC(retrievedItem1);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_AC(retrievedItem2);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testZeroLengthList(PKIX_List *list)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_UInt32 length;
|
|
Packit |
40b132 |
PKIX_Boolean empty;
|
|
Packit |
40b132 |
char *testItemString = "hello";
|
|
Packit |
40b132 |
PKIX_PL_String *testItem = NULL;
|
|
Packit |
40b132 |
PKIX_PL_String *retrievedItem = NULL;
|
|
Packit |
40b132 |
PKIX_List *diffList = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&diffList, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetLength(list, &length, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
if (length != 0){
|
|
Packit |
40b132 |
testError("Incorrect Length returned");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_IsEmpty(list, &empty, plContext));
|
|
Packit |
40b132 |
if (!empty){
|
|
Packit |
40b132 |
testError("Incorrect result for PKIX_List_IsEmpty");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString,
|
|
Packit |
40b132 |
0,
|
|
Packit |
40b132 |
&testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_InsertItem
|
|
Packit |
40b132 |
(list, 0, (PKIX_PL_Object *)testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_SetItem
|
|
Packit |
40b132 |
(list, 0, (PKIX_PL_Object *)testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_GetItem
|
|
Packit |
40b132 |
(list,
|
|
Packit |
40b132 |
0,
|
|
Packit |
40b132 |
(PKIX_PL_Object **)&retrievedItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_DeleteItem(list, 0, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(diffList,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
testDuplicateHelper((PKIX_PL_Object *)diffList, plContext);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EQ_HASH_TOSTR_DUP
|
|
Packit |
40b132 |
(list, list, diffList, "(EMPTY)", List, PKIX_TRUE);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetLength(diffList, &length, plContext));
|
|
Packit |
40b132 |
if (length != 1){
|
|
Packit |
40b132 |
testError("Incorrect Length returned");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_DeleteItem(list, 1, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_DeleteItem(diffList, 0, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetLength(diffList, &length, plContext));
|
|
Packit |
40b132 |
if (length != 0){
|
|
Packit |
40b132 |
testError("Incorrect Length returned");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_AC(testItem);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_AC(diffList);
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testGetLength(PKIX_List *list)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_UInt32 length;
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetLength(list, &length, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
if (length != 3){
|
|
Packit |
40b132 |
testError("Incorrect Length returned");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testGetSetItem(
|
|
Packit |
40b132 |
PKIX_List *list,
|
|
Packit |
40b132 |
char *testItemString,
|
|
Packit |
40b132 |
char *testItemString2,
|
|
Packit |
40b132 |
char *testItemString3,
|
|
Packit |
40b132 |
PKIX_PL_String **testItem,
|
|
Packit |
40b132 |
PKIX_PL_String **testItem2,
|
|
Packit |
40b132 |
PKIX_PL_String **testItem3)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_PL_Object *tempItem = NULL;
|
|
Packit |
40b132 |
char *temp = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString,
|
|
Packit |
40b132 |
PL_strlen(testItemString),
|
|
Packit |
40b132 |
testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString2,
|
|
Packit |
40b132 |
PL_strlen(testItemString2),
|
|
Packit |
40b132 |
testItem2,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString3,
|
|
Packit |
40b132 |
PL_strlen(testItemString3),
|
|
Packit |
40b132 |
testItem3,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object*)*testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object*)*testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object*)*testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_SetItem
|
|
Packit |
40b132 |
(list, 0, (PKIX_PL_Object*)*testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_SetItem
|
|
Packit |
40b132 |
(list, 1, (PKIX_PL_Object*)*testItem2, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_SetItem
|
|
Packit |
40b132 |
(list, 2, (PKIX_PL_Object*)*testItem3, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetItem(list, 0, &tempItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII((PKIX_PL_String*)tempItem, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp(testItemString, temp) != 0)
|
|
Packit |
40b132 |
testError("GetItem from list is incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(tempItem);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetItem(list, 1, &tempItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII((PKIX_PL_String*)tempItem, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp(testItemString2, temp) != 0)
|
|
Packit |
40b132 |
testError("GetItem from list is incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(tempItem);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetItem(list, 2, &tempItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII((PKIX_PL_String*)tempItem, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp(testItemString3, temp) != 0)
|
|
Packit |
40b132 |
testError("GetItem from list is incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(tempItem);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_SetItem
|
|
Packit |
40b132 |
(list, 0, (PKIX_PL_Object*)*testItem3, plContext));
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(*testItem3, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetItem(list, 0, &tempItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII((PKIX_PL_String*)tempItem, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII((PKIX_PL_String*)tempItem, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp(testItemString3, temp) != 0)
|
|
Packit |
40b132 |
testError("GetItem from list is incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(tempItem);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testInsertItem(
|
|
Packit |
40b132 |
PKIX_List *list,
|
|
Packit |
40b132 |
PKIX_PL_String *testItem,
|
|
Packit |
40b132 |
char *testItemString)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_PL_Object *tempItem = NULL;
|
|
Packit |
40b132 |
PKIX_PL_String *outputString = NULL;
|
|
Packit |
40b132 |
char *temp = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_InsertItem
|
|
Packit |
40b132 |
(list, 0, (PKIX_PL_Object*)testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetItem(list, 0, &tempItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII((PKIX_PL_String*)tempItem, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp(testItemString, temp) != 0)
|
|
Packit |
40b132 |
testError("GetItem from list is incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(tempItem);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString((PKIX_PL_Object*)list,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, c, b, c)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testAppendItem(PKIX_List *list, PKIX_PL_String *testItem)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_UInt32 length2;
|
|
Packit |
40b132 |
PKIX_PL_String *outputString = NULL;
|
|
Packit |
40b132 |
char *temp = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetLength(list, &length2, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(list,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString((PKIX_PL_Object*)list,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, c, b, c, a)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testNestedLists(
|
|
Packit |
40b132 |
PKIX_List *list,
|
|
Packit |
40b132 |
PKIX_List *list2,
|
|
Packit |
40b132 |
PKIX_PL_String *testItem,
|
|
Packit |
40b132 |
PKIX_PL_String *testItem2)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_PL_String *outputString = NULL;
|
|
Packit |
40b132 |
char *temp = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list2, (PKIX_PL_Object*)testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(list2,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)NULL,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(list2,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_PL_Object_ToString((PKIX_PL_Object*)list2,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, (null), a)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_InsertItem(list, 1,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)list2,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString((PKIX_PL_Object*)list,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, (a, (null), a), c, b, c, a)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testDeleteItem(
|
|
Packit |
40b132 |
PKIX_List *list,
|
|
Packit |
40b132 |
PKIX_List *list2,
|
|
Packit |
40b132 |
PKIX_PL_String *testItem2,
|
|
Packit |
40b132 |
PKIX_PL_String *testItem3)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_PL_String *outputString = NULL;
|
|
Packit |
40b132 |
char *temp = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_DeleteItem(list, 5, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString
|
|
Packit |
40b132 |
((PKIX_PL_Object*)list,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, (a, (null), a), c, b, c)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_DeleteItem(list, 1, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString
|
|
Packit |
40b132 |
((PKIX_PL_Object*)list,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, c, b, c)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_DeleteItem(list, 0, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString((PKIX_PL_Object*)list,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(c, b, c)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_DeleteItem(list2, 1, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_PL_Object_ToString((PKIX_PL_Object*)list2,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, a)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list2,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem2,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_PL_Object_ToString((PKIX_PL_Object*)list2,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, a, b)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_DeleteItem(list2, 2, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_PL_Object_ToString((PKIX_PL_Object*)list2,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, a)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list2,
|
|
Packit |
40b132 |
(PKIX_PL_Object*)testItem3,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR
|
|
Packit |
40b132 |
(PKIX_PL_Object_ToString((PKIX_PL_Object*)list2,
|
|
Packit |
40b132 |
&outputString,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
temp = PKIX_String2ASCII(outputString, plContext);
|
|
Packit |
40b132 |
if (temp){
|
|
Packit |
40b132 |
if (PL_strcmp("(a, a, c)", temp) != 0)
|
|
Packit |
40b132 |
testError("List toString is Incorrect");
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(temp, plContext));
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(outputString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(list2);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
#if testContainsFunction
|
|
Packit |
40b132 |
/* This test requires pkix_List_Contains to be in nss.def */
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testContains(void)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_List *list;
|
|
Packit |
40b132 |
PKIX_PL_String *testItem, *testItem2, *testItem3, *testItem4;
|
|
Packit |
40b132 |
char *testItemString = "a";
|
|
Packit |
40b132 |
char *testItemString2 = "b";
|
|
Packit |
40b132 |
char *testItemString3 = "c";
|
|
Packit |
40b132 |
char *testItemString4 = "d";
|
|
Packit |
40b132 |
PKIX_Boolean found = PKIX_FALSE;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
subTest("pkix_ListContains");
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString,
|
|
Packit |
40b132 |
PL_strlen(testItemString),
|
|
Packit |
40b132 |
&testItem,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString2,
|
|
Packit |
40b132 |
PL_strlen(testItemString2),
|
|
Packit |
40b132 |
&testItem2,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString3,
|
|
Packit |
40b132 |
PL_strlen(testItemString3),
|
|
Packit |
40b132 |
&testItem3,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create
|
|
Packit |
40b132 |
(PKIX_ESCASCII,
|
|
Packit |
40b132 |
testItemString4,
|
|
Packit |
40b132 |
PL_strlen(testItemString4),
|
|
Packit |
40b132 |
&testItem4,
|
|
Packit |
40b132 |
plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&list, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object*)testItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object*)testItem2, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object*)testItem3, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("pkix_List_Contains <object missing>");
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(pkix_List_Contains
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object *)testItem4, &found, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
if (found){
|
|
Packit |
40b132 |
testError("Contains found item that wasn't there!");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object*)testItem4, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("pkix_List_Contains <object present>");
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(pkix_List_Contains
|
|
Packit |
40b132 |
(list, (PKIX_PL_Object *)testItem4, &found, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
if (!found){
|
|
Packit |
40b132 |
testError("Contains missed item that was present!");
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(list);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(testItem);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(testItem2);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(testItem3);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(testItem4);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
#endif
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testErrorHandling(void)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_List *emptylist = NULL;
|
|
Packit |
40b132 |
PKIX_List *list = NULL;
|
|
Packit |
40b132 |
PKIX_PL_Object *tempItem = NULL;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&list, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR
|
|
Packit |
40b132 |
(PKIX_List_GetItem(list, 4, &tempItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_GetItem(list, 1, NULL, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_SetItem(list, 4, tempItem, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_SetItem(NULL, 1, tempItem, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR
|
|
Packit |
40b132 |
(PKIX_List_InsertItem(list, 4, tempItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR
|
|
Packit |
40b132 |
(PKIX_List_InsertItem(NULL, 1, tempItem, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_AppendItem(NULL, tempItem, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_DeleteItem(list, 5, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_DeleteItem(NULL, 1, plContext));
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_ERROR(PKIX_List_GetLength(list, NULL, plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(list);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(emptylist);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
static void
|
|
Packit |
40b132 |
testDestroy(PKIX_List *list)
|
|
Packit |
40b132 |
{
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(list);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
}
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
int test_list(int argc, char *argv[]) {
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_List *list, *list2;
|
|
Packit |
40b132 |
PKIX_PL_String *testItem, *testItem2, *testItem3;
|
|
Packit |
40b132 |
char *testItemString = "a";
|
|
Packit |
40b132 |
char *testItemString2 = "b";
|
|
Packit |
40b132 |
char *testItemString3 = "c";
|
|
Packit |
40b132 |
PKIX_UInt32 actualMinorVersion;
|
|
Packit |
40b132 |
PKIX_UInt32 j = 0;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_STD_VARS();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
startTests("Lists");
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EXPECT_NO_ERROR(
|
|
Packit |
40b132 |
PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("PKIX_List_Create");
|
|
Packit |
40b132 |
createLists(&list, &list2);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("pkix_List_ReverseList");
|
|
Packit |
40b132 |
testReverseList();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("Zero-length List");
|
|
Packit |
40b132 |
testZeroLengthList(list);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("PKIX_List_Get/SetItem");
|
|
Packit |
40b132 |
testGetSetItem
|
|
Packit |
40b132 |
(list,
|
|
Packit |
40b132 |
testItemString,
|
|
Packit |
40b132 |
testItemString2,
|
|
Packit |
40b132 |
testItemString3,
|
|
Packit |
40b132 |
&testItem,
|
|
Packit |
40b132 |
&testItem2,
|
|
Packit |
40b132 |
&testItem3);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("PKIX_List_GetLength");
|
|
Packit |
40b132 |
testGetLength(list);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_EQ_HASH_TOSTR_DUP
|
|
Packit |
40b132 |
(list,
|
|
Packit |
40b132 |
list,
|
|
Packit |
40b132 |
list2,
|
|
Packit |
40b132 |
"(c, b, c)",
|
|
Packit |
40b132 |
List,
|
|
Packit |
40b132 |
PKIX_TRUE);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("PKIX_List_InsertItem");
|
|
Packit |
40b132 |
testInsertItem(list, testItem, testItemString);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("PKIX_List_AppendItem");
|
|
Packit |
40b132 |
testAppendItem(list, testItem);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("Nested Lists");
|
|
Packit |
40b132 |
testNestedLists(list, list2, testItem, testItem2);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("PKIX_List_DeleteItem");
|
|
Packit |
40b132 |
testDeleteItem(list, list2, testItem2, testItem3);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(testItem);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(testItem2);
|
|
Packit |
40b132 |
PKIX_TEST_DECREF_BC(testItem3);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
#if testContainsFunction
|
|
Packit |
40b132 |
/* This test requires pkix_List_Contains to be in nss.def */
|
|
Packit |
40b132 |
testContains();
|
|
Packit |
40b132 |
#endif
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("PKIX_List Error Handling");
|
|
Packit |
40b132 |
testErrorHandling();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
subTest("PKIX_List_Destroy");
|
|
Packit |
40b132 |
testDestroy(list);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
cleanup:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_Shutdown(plContext);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PKIX_TEST_RETURN();
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
endTests("Lists");
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
return (0);
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
}
|