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 "lnn_kv_adapter_wrapper.h"
18 #include "softbus_errcode.h"
19 #include "softbus_adapter_mem.h"
20 #include <cstdint>
21 #include <string>
22 #include <cstring>
23
24 using namespace std;
25 using namespace testing::ext;
26
27 namespace OHOS {
28 namespace {
29 constexpr int32_t MAX_STRING_LEN = 4096;
30 constexpr int32_t MIN_STRING_LEN = 1;
31 constexpr int32_t APP_ID_LEN = 8;
32 constexpr int32_t STORE_ID_LEN = 14;
33 const std::string APP_ID = "dsoftbus";
34 const std::string STORE_ID = "dsoftbus_kv_db";
35 }
36 static int32_t g_dbId = 1;
37 class KVAdapterWrapperTest : public testing::Test {
38 protected:
39 static void SetUpTestCase(void);
40 static void TearDownTestCase(void);
41 void SetUp();
42 void TearDown();
43 };
SetUpTestCase(void)44 void KVAdapterWrapperTest::SetUpTestCase(void)
45 {
46 int32_t dbID;
47 LnnCreateKvAdapter(&dbID, APP_ID.c_str(), APP_ID_LEN, STORE_ID.c_str(), STORE_ID_LEN);
48 g_dbId = dbID;
49 }
50
TearDownTestCase(void)51 void KVAdapterWrapperTest::TearDownTestCase(void)
52 {
53 LnnDestroyKvAdapter(g_dbId);
54 }
55
SetUp()56 void KVAdapterWrapperTest::SetUp()
57 {
58 }
59
TearDown()60 void KVAdapterWrapperTest::TearDown()
61 {
62 }
63
64 /**
65 * @tc.name: LnnPutDBData
66 * @tc.desc: LnnPutDBData
67 * @tc.type: FUNC
68 * @tc.require:
69 */
70 HWTEST_F(KVAdapterWrapperTest, LnnPutDBData001, TestSize.Level1)
71 {
72 int32_t dbId = g_dbId;
73 string keyStr = "aaa";
74 string valueStr = "aaa";
75 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), 3, valueStr.c_str(), 3), SOFTBUS_OK);
76 dbId++;
77 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), MAX_STRING_LEN, valueStr.c_str(), MAX_STRING_LEN),
78 SOFTBUS_INVALID_PARAM);
79 dbId = 0;
80 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), MAX_STRING_LEN, valueStr.c_str(), MAX_STRING_LEN),
81 SOFTBUS_INVALID_PARAM);
82 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), MAX_STRING_LEN, valueStr.c_str(), MAX_STRING_LEN + 1),
83 SOFTBUS_INVALID_PARAM);
84 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), MAX_STRING_LEN, valueStr.c_str(), MIN_STRING_LEN - 1),
85 SOFTBUS_INVALID_PARAM);
86 char *valuePtr = nullptr;
87 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), MAX_STRING_LEN, valuePtr, MIN_STRING_LEN - 1),
88 SOFTBUS_INVALID_PARAM);
89 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), MAX_STRING_LEN + 1, valuePtr, MIN_STRING_LEN - 1),
90 SOFTBUS_INVALID_PARAM);
91 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), MIN_STRING_LEN - 1, valuePtr, MIN_STRING_LEN - 1),
92 SOFTBUS_INVALID_PARAM);
93 char *keyPtr = nullptr;
94 EXPECT_EQ(LnnPutDBData(dbId, keyPtr, MIN_STRING_LEN - 1, valuePtr, MIN_STRING_LEN - 1), SOFTBUS_INVALID_PARAM);
95 }
96
97 /**
98 * @tc.name: LnnDeleteDBData
99 * @tc.desc: LnnDeleteDBData
100 * @tc.type: FUNC
101 * @tc.require:
102 */
103 HWTEST_F(KVAdapterWrapperTest, LnnDelete001, TestSize.Level1)
104 {
105 int32_t dbId = g_dbId;
106 string keyStr = "aaa";
107 string valueStr = "ccc";
108 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), 3, valueStr.c_str(), 3), SOFTBUS_OK);
109 EXPECT_EQ(LnnDeleteDBData(dbId, keyStr.c_str(), 3), SOFTBUS_OK);
110 dbId++;
111 EXPECT_EQ(LnnDeleteDBData(dbId, keyStr.c_str(), MAX_STRING_LEN), SOFTBUS_INVALID_PARAM);
112 dbId = 0;
113 EXPECT_EQ(LnnDeleteDBData(dbId, keyStr.c_str(), MAX_STRING_LEN), SOFTBUS_INVALID_PARAM);
114 EXPECT_EQ(LnnDeleteDBData(dbId, keyStr.c_str(), MAX_STRING_LEN + 1), SOFTBUS_INVALID_PARAM);
115 EXPECT_EQ(LnnDeleteDBData(dbId, keyStr.c_str(), MIN_STRING_LEN - 1), SOFTBUS_INVALID_PARAM);
116 char *keyPtr = nullptr;
117 EXPECT_EQ(LnnDeleteDBData(dbId, keyPtr, MIN_STRING_LEN - 1), SOFTBUS_INVALID_PARAM);
118 }
119
120 /**
121 * @tc.name: LnnDeleteDBDataByPrefix
122 * @tc.desc: LnnDeleteDBDataByPrefix
123 * @tc.type: FUNC
124 * @tc.require:
125 */
126 HWTEST_F(KVAdapterWrapperTest, LnnDeleteByPrefix001, TestSize.Level1)
127 {
128 int32_t dbId = g_dbId;
129 string keyStr = "aa11";
130 string valueStr = "111";
131 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), 4, valueStr.c_str(), 3), SOFTBUS_OK);
132 string keyStr2 = "aa22";
133 string valueStr2 = "222";
134 EXPECT_EQ(LnnPutDBData(dbId, keyStr2.c_str(), 4, valueStr2.c_str(), 3), SOFTBUS_OK);
135 string keyPrefix = "aa";
136 EXPECT_EQ(LnnDeleteDBDataByPrefix(dbId, keyPrefix.c_str(), 2), SOFTBUS_OK);
137 dbId++;
138 EXPECT_EQ(LnnDeleteDBDataByPrefix(dbId, keyStr.c_str(), MAX_STRING_LEN), SOFTBUS_INVALID_PARAM);
139 dbId = 0;
140 EXPECT_EQ(LnnDeleteDBDataByPrefix(dbId, keyStr.c_str(), MAX_STRING_LEN), SOFTBUS_INVALID_PARAM);
141 EXPECT_EQ(LnnDeleteDBDataByPrefix(dbId, keyStr.c_str(), MAX_STRING_LEN + 1), SOFTBUS_INVALID_PARAM);
142 EXPECT_EQ(LnnDeleteDBDataByPrefix(dbId, keyStr.c_str(), MIN_STRING_LEN - 1), SOFTBUS_INVALID_PARAM);
143 char *keyPtr = nullptr;
144 EXPECT_EQ(LnnDeleteDBDataByPrefix(dbId, keyPtr, MIN_STRING_LEN - 1), SOFTBUS_INVALID_PARAM);
145 }
146
147 /**
148 * @tc.name: LnnGetDBData
149 * @tc.desc: LnnGetDBData
150 * @tc.type: FUNC
151 * @tc.require:
152 */
153 HWTEST_F(KVAdapterWrapperTest, LnnGet001, TestSize.Level1)
154 {
155 int32_t dbId = g_dbId;
156 string keyStr = "aaa";
157 string valueStr = "aaa";
158 char *value = nullptr;
159 EXPECT_EQ(LnnPutDBData(dbId, keyStr.c_str(), 3, valueStr.c_str(), 3), SOFTBUS_OK);
160 EXPECT_EQ(LnnGetDBData(dbId, keyStr.c_str(), 3, &value), SOFTBUS_OK);
161 SoftBusFree(value);
162 value = nullptr;
163 dbId++;
164 EXPECT_EQ(LnnGetDBData(dbId, keyStr.c_str(), MAX_STRING_LEN, &value), SOFTBUS_INVALID_PARAM);
165 dbId = 0;
166 EXPECT_EQ(LnnGetDBData(dbId, keyStr.c_str(), MAX_STRING_LEN, &value), SOFTBUS_INVALID_PARAM);
167 EXPECT_EQ(LnnGetDBData(dbId, keyStr.c_str(), MAX_STRING_LEN + 1, &value), SOFTBUS_INVALID_PARAM);
168 EXPECT_EQ(LnnGetDBData(dbId, keyStr.c_str(), MIN_STRING_LEN - 1, &value), SOFTBUS_INVALID_PARAM);
169 char *keyPtr = nullptr;
170 EXPECT_EQ(LnnGetDBData(dbId, keyPtr, MIN_STRING_LEN - 1, &value), SOFTBUS_INVALID_PARAM);
171 }
172
173 /**
174 * @tc.name: LnnDestroyKvAdapter
175 * @tc.desc: LnnDestroyKvAdapter
176 * @tc.type: FUNC
177 * @tc.require:
178 */
179 HWTEST_F(KVAdapterWrapperTest, LnnDestroy001, TestSize.Level1)
180 {
181 int32_t dbId;
182 int32_t createRet = LnnCreateKvAdapter(&dbId, APP_ID.c_str(), APP_ID_LEN, STORE_ID.c_str(), STORE_ID_LEN);
183 EXPECT_EQ(createRet, SOFTBUS_OK);
184 EXPECT_EQ(LnnDestroyKvAdapter(dbId), SOFTBUS_OK);
185 }
186
187 } // namespace OHOS
188