tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_monitorlock.c (2690B)


      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_monitorlock.c
      6 *
      7 * Tests basic MonitorLock 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 createMonitorLockes(
     18    PKIX_PL_MonitorLock **monitorLock,
     19    PKIX_PL_MonitorLock **monitorLock2,
     20    PKIX_PL_MonitorLock **monitorLock3)
     21 {
     22    PKIX_TEST_STD_VARS();
     23 
     24    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_MonitorLock_Create(monitorLock, plContext));
     25    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_MonitorLock_Create(monitorLock2, plContext));
     26 
     27    *monitorLock3 = *monitorLock;
     28    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_IncRef((PKIX_PL_Object *)*monitorLock3, plContext));
     29 
     30 cleanup:
     31    PKIX_TEST_RETURN();
     32 }
     33 
     34 static void
     35 testLock(PKIX_PL_MonitorLock *monitorLock)
     36 {
     37    PKIX_TEST_STD_VARS();
     38 
     39    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_MonitorLock_Enter(monitorLock, plContext));
     40    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_MonitorLock_Enter(monitorLock, plContext));
     41    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_MonitorLock_Exit(monitorLock, plContext));
     42    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_MonitorLock_Exit(monitorLock, plContext));
     43 
     44 cleanup:
     45    PKIX_TEST_RETURN();
     46 }
     47 
     48 static void
     49 testDestroy(
     50    PKIX_PL_MonitorLock *monitorLock,
     51    PKIX_PL_MonitorLock *monitorLock2,
     52    PKIX_PL_MonitorLock *monitorLock3)
     53 {
     54    PKIX_TEST_STD_VARS();
     55 
     56    PKIX_TEST_DECREF_BC(monitorLock);
     57    PKIX_TEST_DECREF_BC(monitorLock2);
     58    PKIX_TEST_DECREF_BC(monitorLock3);
     59 
     60 cleanup:
     61    PKIX_TEST_RETURN();
     62 }
     63 
     64 int
     65 test_monitorlock(int argc, char *argv[])
     66 {
     67 
     68    PKIX_PL_MonitorLock *monitorLock, *monitorLock2, *monitorLock3;
     69    PKIX_UInt32 actualMinorVersion;
     70    PKIX_UInt32 j = 0;
     71 
     72    PKIX_TEST_STD_VARS();
     73 
     74    startTests("MonitorLocks");
     75 
     76    PKIX_TEST_EXPECT_NO_ERROR(
     77        PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
     78 
     79    subTest("PKIX_PL_MonitorLock_Create");
     80    createMonitorLockes(&monitorLock, &monitorLock2, &monitorLock3);
     81 
     82    PKIX_TEST_EQ_HASH_TOSTR_DUP(monitorLock,
     83                                monitorLock3,
     84                                monitorLock2,
     85                                NULL,
     86                                MonitorLock,
     87                                PKIX_FALSE);
     88 
     89    subTest("PKIX_PL_MonitorLock_Lock/Unlock");
     90    testLock(monitorLock);
     91 
     92    subTest("PKIX_PL_MonitorLock_Destroy");
     93    testDestroy(monitorLock, monitorLock2, monitorLock3);
     94 
     95 cleanup:
     96 
     97    PKIX_Shutdown(plContext);
     98 
     99    PKIX_TEST_RETURN();
    100 
    101    endTests("MonitorLockes");
    102 
    103    return (0);
    104 }