• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 
18 #ifndef NDEBUG
19 #define NDEBUG // uid_util assert
20 #endif         // !NDEBUG
21 
22 #include <base/containers/string_view.h>
23 #include <base/util/uid.h>
24 #include <base/util/uid_util.h>
25 
26 using namespace BASE_NS;
27 using namespace testing::ext;
28 class UidTest : public testing::Test {
29 public:
SetUpTestSuite()30     static void SetUpTestSuite() {}
TearDownTestSuite()31     static void TearDownTestSuite() {}
SetUp()32     void SetUp() override {}
TearDown()33     void TearDown() override {}
34 };
35 
36 HWTEST_F(UidTest, Uid, TestSize.Level1)
37 {
38     ASSERT_EQ(Uid(), Uid());
39 
40     constexpr Uid uid1 { "12345678-90ab-cdef-ABCD-EF1234567890" };
41     constexpr Uid uid2 { "ac836534-faf7-4919-b65f-eb78df4b8d0d" };
42     Uid uid3;
43 
44     // The Uid "12345678-90ab-cdef-ABCD-EF1234567890" as raw bytes.
45     constexpr uint8_t raw[16] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56,
46         0x78, 0x90 };
47 
48     constexpr Uid uid1Raw { raw };
49     ASSERT_EQ(uid1, uid1Raw);
50     ASSERT_NE(uid2, uid1Raw);
51 
52     // Test equality and inequality.
53     ASSERT_EQ(uid1, uid1);
54     ASSERT_NE(uid1, uid2);
55     ASSERT_NE(uid1, uid3);
56 
57     // Test assignment.
58     uid3 = uid1;
59     ASSERT_EQ(uid1, uid3);
60 
61     // Test cpy cntsr.
62     constexpr Uid uid1Copy(uid1);
63     ASSERT_EQ(uid1, uid1Copy);
64 }
65 
66 HWTEST_F(UidTest, UidUtil, TestSize.Level1)
67 {
68     constexpr Uid uid { "12345678-90ab-cdef-abcd-ef1234567890" };
69     const string_view str { "12345678-90ab-cdef-abcd-ef1234567890" };
70 
71     // Test Uid to string conversion.
72     constexpr auto strB = to_string(uid);
73     ASSERT_EQ(str, strB);
74 
75     // Test String to uid conversion.
76     constexpr Uid uidB = StringToUid("12345678-90ab-cdef-abcd-ef1234567890");
77     ASSERT_EQ(uid, uidB);
78 }
79 
80 HWTEST_F(UidTest, Transforms, TestSize.Level1)
81 {
82     ASSERT_EQ(HexToDec('a'), 10);
83     ASSERT_EQ(HexToDec('A'), 10);
84     ASSERT_EQ(HexToDec('5'), 5);
85     ASSERT_EQ(HexToDec('k'), 0);
86     ASSERT_EQ(HexToUint8("a5"), 165);  // only first 2 symbols
87     ASSERT_EQ(HexToUint8("a57"), 165); // only first 2 symbols
88     constexpr Uid uidA { "12345678-90ab-cdef-ABCD-EF1234567890" };
89     constexpr Uid uidB { "12345678-90ab-cdef-BBCD-EF1234567890" };
90     constexpr Uid uidC { "12345678-90ab-cdef-BBCD-EF1234567891" };
91     ASSERT_TRUE(uidA < uidB);
92     ASSERT_TRUE(uidB < uidC);
93     ASSERT_TRUE(uidA < uidC);
94     ASSERT_FALSE(uidB < uidB);
95     ASSERT_LT(uidA.compare(uidB), 0);
96     ASSERT_LT(uidB.compare(uidC), 0);
97     ASSERT_GT(uidB.compare(uidA), 0);
98     ASSERT_GT(uidC.compare(uidB), 0);
99     ASSERT_EQ(uidB.compare(uidB), 0);
100 
101     {
102         static_assert(IsUidString("12345678-90ab-cdef-ABCD-EF1234567890"));
103         const bool ok = IsUidString("12345678-90ab-cdef-ABCD-EF1234567890");
104         EXPECT_TRUE(ok);
105 
106         static constexpr Uid uid { "12345678-90ab-cdef-ABCD-EF1234567890" };
107         static constexpr uint8_t raw[16] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0xAB, 0xCD, 0xEF, 0x12, 0x34,
108             0x56, 0x78, 0x90 };
109         static constexpr Uid uidRaw { raw };
110         static_assert(uid == uidRaw);
111         ASSERT_EQ(uid, uidRaw);
112     }
113     {
114         static_assert(!IsUidString("12345678-90ab-cdef-gABC-DEF123456789"));
115         static_assert(!IsUidString("12345678190ab-cdef-ABCD-EF1234567890"));
116         static_assert(!IsUidString("12345678-90ab1cdef-ABCD-EF1234567890"));
117         static_assert(!IsUidString("12345678-90ab-cdef1ABCD-EF1234567890"));
118         static_assert(!IsUidString("12345678-90ab-cdef-ABCD1EF1234567890"));
119         static_assert(!IsUidString("12345678-90ab-cdef-ABCD-EF123456789"));
120         EXPECT_FALSE(IsUidString("12345678-90ab-cdef-ABCD-EF12345678900"));
121 
122         static constexpr Uid uid { "12345678-90ab-cdef-gABC-DEF123456789" };
123         static constexpr Uid uidRaw {};
124         static_assert(uid == uidRaw);
125         ASSERT_EQ(uid, uidRaw);
126     }
127 }
128