mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-16 04:20:32 +01:00
104 lines
2.3 KiB
C
104 lines
2.3 KiB
C
/* 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/. */
|
|
/*
|
|
* test_mutex.c
|
|
*
|
|
* Tests basic mutex object functionality. No multi-threading.
|
|
*
|
|
*/
|
|
|
|
#include "testutil.h"
|
|
#include "testutil_nss.h"
|
|
|
|
static void *plContext = NULL;
|
|
|
|
static
|
|
void createMutexes(
|
|
PKIX_PL_Mutex **mutex,
|
|
PKIX_PL_Mutex **mutex2,
|
|
PKIX_PL_Mutex **mutex3)
|
|
{
|
|
PKIX_TEST_STD_VARS();
|
|
|
|
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Mutex_Create(mutex, plContext));
|
|
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Mutex_Create(mutex2, plContext));
|
|
|
|
*mutex3 = *mutex;
|
|
PKIX_TEST_EXPECT_NO_ERROR
|
|
(PKIX_PL_Object_IncRef((PKIX_PL_Object*)*mutex3, plContext));
|
|
|
|
cleanup:
|
|
PKIX_TEST_RETURN();
|
|
}
|
|
|
|
static
|
|
void testLock(PKIX_PL_Mutex *mutex)
|
|
{
|
|
PKIX_TEST_STD_VARS();
|
|
|
|
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Mutex_Lock(mutex, plContext));
|
|
PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Mutex_Unlock(mutex, plContext));
|
|
|
|
cleanup:
|
|
PKIX_TEST_RETURN();
|
|
}
|
|
|
|
static
|
|
void testDestroy(
|
|
PKIX_PL_Mutex *mutex,
|
|
PKIX_PL_Mutex *mutex2,
|
|
PKIX_PL_Mutex *mutex3)
|
|
{
|
|
PKIX_TEST_STD_VARS();
|
|
|
|
PKIX_TEST_DECREF_BC(mutex);
|
|
PKIX_TEST_DECREF_BC(mutex2);
|
|
PKIX_TEST_DECREF_BC(mutex3);
|
|
|
|
cleanup:
|
|
PKIX_TEST_RETURN();
|
|
}
|
|
|
|
int test_mutex(int argc, char *argv[]) {
|
|
|
|
PKIX_PL_Mutex *mutex, *mutex2, *mutex3;
|
|
PKIX_UInt32 actualMinorVersion;
|
|
PKIX_UInt32 j = 0;
|
|
|
|
PKIX_TEST_STD_VARS();
|
|
|
|
startTests("Mutexes");
|
|
|
|
PKIX_TEST_EXPECT_NO_ERROR(
|
|
PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
|
|
|
|
subTest("PKIX_PL_Mutex_Create");
|
|
createMutexes(&mutex, &mutex2, &mutex3);
|
|
|
|
PKIX_TEST_EQ_HASH_TOSTR_DUP
|
|
(mutex,
|
|
mutex3,
|
|
mutex2,
|
|
NULL,
|
|
Mutex,
|
|
PKIX_FALSE);
|
|
|
|
subTest("PKIX_PL_Mutex_Lock/Unlock");
|
|
testLock(mutex);
|
|
|
|
subTest("PKIX_PL_Mutex_Destroy");
|
|
testDestroy(mutex, mutex2, mutex3);
|
|
|
|
cleanup:
|
|
|
|
PKIX_Shutdown(plContext);
|
|
|
|
PKIX_TEST_RETURN();
|
|
|
|
endTests("Mutexes");
|
|
|
|
return (0);
|
|
|
|
}
|