1/* 2 * Copyright (C) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include <gtest/gtest.h> 17#include <meta/api/threading/mutex.h> 18 19#include "src/test_runner.h" 20#include "src/testing_objects.h" 21 22META_BEGIN_NAMESPACE() 23 24using namespace testing::ext; 25using CORE_NS::Mutex; 26using CORE_NS::UniqueLock; 27 28class MutexTest : public testing::Test { 29public: 30 static void SetUpTestSuite() 31 { 32 SetTest(); 33 } 34 static void TearDownTestSuite() 35 { 36 ResetTest(); 37 } 38 void SetUp() override {} 39 void TearDown() override {} 40}; 41 42/** 43 * @tc.name: MutexTest 44 * @tc.desc: test UniqueLock function 45 * @tc.type: FUNC 46 * @tc.require: I7DMS1 47 */ 48HWTEST_F(MutexTest, UniqueLock, TestSize.Level1) 49{ 50 Mutex m; 51 { 52 UniqueLock l { m }; 53 EXPECT_TRUE(l); 54 l.Unlock(); 55 EXPECT_FALSE(l); 56 } 57 58 { 59 UniqueLock l { m }; 60 EXPECT_TRUE(l); 61 l.Unlock(); 62 EXPECT_FALSE(l); 63 l.Lock(); 64 EXPECT_TRUE(l); 65 } 66 67 { 68 UniqueLock l { m }; 69 EXPECT_TRUE(l); 70 UniqueLock l2 = BASE_NS::move(l); 71 EXPECT_FALSE(l); 72 EXPECT_TRUE(l2); 73 l = std::move(l2); 74 EXPECT_FALSE(l2); 75 EXPECT_TRUE(l); 76 } 77} 78META_END_NAMESPACE()