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