test_mutex.c (2211B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 /* 5 * test_mutex.c 6 * 7 * Tests basic mutex object functionality. No multi-threading. 8 * 9 */ 10 11 #include "testutil.h" 12 #include "testutil_nss.h" 13 14 static void *plContext = NULL; 15 16 static void 17 createMutexes( 18 PKIX_PL_Mutex **mutex, 19 PKIX_PL_Mutex **mutex2, 20 PKIX_PL_Mutex **mutex3) 21 { 22 PKIX_TEST_STD_VARS(); 23 24 PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Mutex_Create(mutex, plContext)); 25 PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Mutex_Create(mutex2, plContext)); 26 27 *mutex3 = *mutex; 28 PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_IncRef((PKIX_PL_Object *)*mutex3, plContext)); 29 30 cleanup: 31 PKIX_TEST_RETURN(); 32 } 33 34 static void 35 testLock(PKIX_PL_Mutex *mutex) 36 { 37 PKIX_TEST_STD_VARS(); 38 39 PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Mutex_Lock(mutex, plContext)); 40 PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Mutex_Unlock(mutex, plContext)); 41 42 cleanup: 43 PKIX_TEST_RETURN(); 44 } 45 46 static void 47 testDestroy( 48 PKIX_PL_Mutex *mutex, 49 PKIX_PL_Mutex *mutex2, 50 PKIX_PL_Mutex *mutex3) 51 { 52 PKIX_TEST_STD_VARS(); 53 54 PKIX_TEST_DECREF_BC(mutex); 55 PKIX_TEST_DECREF_BC(mutex2); 56 PKIX_TEST_DECREF_BC(mutex3); 57 58 cleanup: 59 PKIX_TEST_RETURN(); 60 } 61 62 int 63 test_mutex(int argc, char *argv[]) 64 { 65 66 PKIX_PL_Mutex *mutex, *mutex2, *mutex3; 67 PKIX_UInt32 actualMinorVersion; 68 PKIX_UInt32 j = 0; 69 70 PKIX_TEST_STD_VARS(); 71 72 startTests("Mutexes"); 73 74 PKIX_TEST_EXPECT_NO_ERROR( 75 PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext)); 76 77 subTest("PKIX_PL_Mutex_Create"); 78 createMutexes(&mutex, &mutex2, &mutex3); 79 80 PKIX_TEST_EQ_HASH_TOSTR_DUP(mutex, 81 mutex3, 82 mutex2, 83 NULL, 84 Mutex, 85 PKIX_FALSE); 86 87 subTest("PKIX_PL_Mutex_Lock/Unlock"); 88 testLock(mutex); 89 90 subTest("PKIX_PL_Mutex_Destroy"); 91 testDestroy(mutex, mutex2, mutex3); 92 93 cleanup: 94 95 PKIX_Shutdown(plContext); 96 97 PKIX_TEST_RETURN(); 98 99 endTests("Mutexes"); 100 101 return (0); 102 }