brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 5fcdbd9 Raw
83 lines · cpp
1//===-- Unittests for pthread_condattr_t ----------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "include/llvm-libc-macros/generic-error-number-macros.h" // EINVAL10#include "include/llvm-libc-macros/time-macros.h" // CLOCK_REALTIME, CLOCK_MONOTONIC11#include "src/pthread/pthread_condattr_destroy.h"12#include "src/pthread/pthread_condattr_getclock.h"13#include "src/pthread/pthread_condattr_getpshared.h"14#include "src/pthread/pthread_condattr_init.h"15#include "src/pthread/pthread_condattr_setclock.h"16#include "src/pthread/pthread_condattr_setpshared.h"17#include "test/UnitTest/Test.h"18 19// TODO: https://github.com/llvm/llvm-project/issues/8899720#include <pthread.h> // PTHREAD_PROCESS_PRIVATE, PTHREAD_PROCESS_SHARED21 22TEST(LlvmLibcPThreadCondAttrTest, InitAndDestroy) {23  pthread_condattr_t cond;24  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_init(&cond), 0);25  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_destroy(&cond), 0);26}27 28TEST(LlvmLibcPThreadCondAttrTest, GetDefaultValues) {29  pthread_condattr_t cond;30 31  // Invalid clock id.32  clockid_t clock = 7;33  // Invalid value.34  int pshared = 42;35 36  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_init(&cond), 0);37  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_getclock(&cond, &clock), 0);38  ASSERT_EQ(clock, CLOCK_REALTIME);39  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_getpshared(&cond, &pshared), 0);40  ASSERT_EQ(pshared, PTHREAD_PROCESS_PRIVATE);41  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_destroy(&cond), 0);42}43 44TEST(LlvmLibcPThreadCondAttrTest, SetGoodValues) {45  pthread_condattr_t cond;46 47  // Invalid clock id.48  clockid_t clock = 7;49  // Invalid value.50  int pshared = 42;51 52  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_init(&cond), 0);53  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_setclock(&cond, CLOCK_MONOTONIC),54            0);55  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_getclock(&cond, &clock), 0);56  ASSERT_EQ(clock, CLOCK_MONOTONIC);57  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_setpshared(&cond,58                                                        PTHREAD_PROCESS_SHARED),59            0);60  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_getpshared(&cond, &pshared), 0);61  ASSERT_EQ(pshared, PTHREAD_PROCESS_SHARED);62  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_destroy(&cond), 0);63}64 65TEST(LlvmLibcPThreadCondAttrTest, SetBadValues) {66  pthread_condattr_t cond;67 68  // Invalid clock id.69  clockid_t clock = 7;70  // Invalid value.71  int pshared = 42;72 73  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_init(&cond), 0);74  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_setclock(&cond, clock), EINVAL);75  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_getclock(&cond, &clock), 0);76  ASSERT_EQ(clock, CLOCK_REALTIME);77  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_setpshared(&cond, pshared),78            EINVAL);79  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_getpshared(&cond, &pshared), 0);80  ASSERT_EQ(pshared, PTHREAD_PROCESS_PRIVATE);81  ASSERT_EQ(LIBC_NAMESPACE::pthread_condattr_destroy(&cond), 0);82}83