1fc223305Sopenharmony_ci/*
2fc223305Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3fc223305Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fc223305Sopenharmony_ci * you may not use this file except in compliance with the License.
5fc223305Sopenharmony_ci * You may obtain a copy of the License at
6fc223305Sopenharmony_ci *
7fc223305Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8fc223305Sopenharmony_ci *
9fc223305Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fc223305Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fc223305Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fc223305Sopenharmony_ci * See the License for the specific language governing permissions and
13fc223305Sopenharmony_ci * limitations under the License.
14fc223305Sopenharmony_ci */
15fc223305Sopenharmony_ci
16fc223305Sopenharmony_ci#include "preferences.h"
17fc223305Sopenharmony_ci
18fc223305Sopenharmony_ci#include <gtest/gtest.h>
19fc223305Sopenharmony_ci
20fc223305Sopenharmony_ci#include <cctype>
21fc223305Sopenharmony_ci#include <condition_variable>
22fc223305Sopenharmony_ci#include <cstdint>
23fc223305Sopenharmony_ci#include <iostream>
24fc223305Sopenharmony_ci#include <memory>
25fc223305Sopenharmony_ci#include <mutex>
26fc223305Sopenharmony_ci#include <string>
27fc223305Sopenharmony_ci
28fc223305Sopenharmony_ci#include "log_print.h"
29fc223305Sopenharmony_ci#include "preferences_errno.h"
30fc223305Sopenharmony_ci#include "preferences_helper.h"
31fc223305Sopenharmony_ci#include "preferences_observer.h"
32fc223305Sopenharmony_ci#include "preferences_value.h"
33fc223305Sopenharmony_ci
34fc223305Sopenharmony_ciusing namespace testing::ext;
35fc223305Sopenharmony_ciusing namespace OHOS::NativePreferences;
36fc223305Sopenharmony_ci
37fc223305Sopenharmony_cinamespace {
38fc223305Sopenharmony_ciconst std::string LONG_KEY = std::string(Preferences::MAX_KEY_LENGTH, std::toupper('a'));
39fc223305Sopenharmony_ciconst std::string KEY_TEST_INT_ELEMENT = "key_test_int";
40fc223305Sopenharmony_ciconst std::string KEY_TEST_LONG_ELEMENT = "key_test_long";
41fc223305Sopenharmony_ciconst std::string KEY_TEST_FLOAT_ELEMENT = "key_test_float";
42fc223305Sopenharmony_ciconst std::string KEY_TEST_DOUBLE_ELEMENT = "key_test_double";
43fc223305Sopenharmony_ciconst std::string KEY_TEST_BOOL_ELEMENT = "key_test_bool";
44fc223305Sopenharmony_ciconst std::string KEY_TEST_STRING_ELEMENT = "key_test_string";
45fc223305Sopenharmony_ciconst std::string KEY_TEST_STRING_ARRAY_ELEMENT = "key_test_string_array";
46fc223305Sopenharmony_ciconst std::string KEY_TEST_BOOL_ARRAY_ELEMENT = "key_test_bool_array";
47fc223305Sopenharmony_ciconst std::string KEY_TEST_DOUBLE_ARRAY_ELEMENT = "key_test_double_array";
48fc223305Sopenharmony_ciconst std::string KEY_TEST_UINT8_ARRAY_ELEMENT = "key_test_uint8_array";
49fc223305Sopenharmony_ciconst std::string KEY_TEST_OBJECT_ELEMENT = "key_test_object";
50fc223305Sopenharmony_ciconst std::string KEY_TEST_BIGINT_ELEMENT = "key_test_bigint";
51fc223305Sopenharmony_ciclass PreferencesTest : public testing::Test {
52fc223305Sopenharmony_cipublic:
53fc223305Sopenharmony_ci    static void SetUpTestCase(void);
54fc223305Sopenharmony_ci    static void TearDownTestCase(void);
55fc223305Sopenharmony_ci    void SetUp();
56fc223305Sopenharmony_ci    void TearDown();
57fc223305Sopenharmony_ci
58fc223305Sopenharmony_ci    static std::shared_ptr<Preferences> pref;
59fc223305Sopenharmony_ci};
60fc223305Sopenharmony_ci
61fc223305Sopenharmony_cistd::shared_ptr<Preferences> PreferencesTest::pref = nullptr;
62fc223305Sopenharmony_ci
63fc223305Sopenharmony_civoid PreferencesTest::SetUpTestCase(void)
64fc223305Sopenharmony_ci{
65fc223305Sopenharmony_ci    int errCode = E_OK;
66fc223305Sopenharmony_ci    pref = PreferencesHelper::GetPreferences("/data/test/test", errCode);
67fc223305Sopenharmony_ci    EXPECT_EQ(errCode, E_OK);
68fc223305Sopenharmony_ci}
69fc223305Sopenharmony_ci
70fc223305Sopenharmony_civoid PreferencesTest::TearDownTestCase(void)
71fc223305Sopenharmony_ci{
72fc223305Sopenharmony_ci    pref = nullptr;
73fc223305Sopenharmony_ci    int ret = PreferencesHelper::DeletePreferences("/data/test/test");
74fc223305Sopenharmony_ci    EXPECT_EQ(ret, E_OK);
75fc223305Sopenharmony_ci}
76fc223305Sopenharmony_ci
77fc223305Sopenharmony_civoid PreferencesTest::SetUp(void)
78fc223305Sopenharmony_ci{
79fc223305Sopenharmony_ci}
80fc223305Sopenharmony_ci
81fc223305Sopenharmony_civoid PreferencesTest::TearDown(void)
82fc223305Sopenharmony_ci{
83fc223305Sopenharmony_ci    /* clear all data after every case */
84fc223305Sopenharmony_ci    if (pref) {
85fc223305Sopenharmony_ci        pref->Clear();
86fc223305Sopenharmony_ci        pref->FlushSync();
87fc223305Sopenharmony_ci    }
88fc223305Sopenharmony_ci}
89fc223305Sopenharmony_ci
90fc223305Sopenharmony_ciclass PreferencesObserverCounter : public PreferencesObserver {
91fc223305Sopenharmony_cipublic:
92fc223305Sopenharmony_ci    virtual ~PreferencesObserverCounter();
93fc223305Sopenharmony_ci    void OnChange(const std::string &key) override;
94fc223305Sopenharmony_ci    void OnChange(const std::map<std::string, OHOS::NativePreferences::PreferencesValue> &records) override;
95fc223305Sopenharmony_ci
96fc223305Sopenharmony_ci    std::atomic_int notifyTimes;
97fc223305Sopenharmony_ci    static const std::vector<std::string> NOTIFY_KEYS_VECTOR;
98fc223305Sopenharmony_ci};
99fc223305Sopenharmony_ci
100fc223305Sopenharmony_ciPreferencesObserverCounter::~PreferencesObserverCounter()
101fc223305Sopenharmony_ci{
102fc223305Sopenharmony_ci}
103fc223305Sopenharmony_ci
104fc223305Sopenharmony_civoid PreferencesObserverCounter::OnChange(const std::string &key)
105fc223305Sopenharmony_ci{
106fc223305Sopenharmony_ci    for (auto it = NOTIFY_KEYS_VECTOR.cbegin(); it != NOTIFY_KEYS_VECTOR.cend(); it++) {
107fc223305Sopenharmony_ci        if (key.compare(*it)) {
108fc223305Sopenharmony_ci            notifyTimes++;
109fc223305Sopenharmony_ci            break;
110fc223305Sopenharmony_ci        }
111fc223305Sopenharmony_ci    }
112fc223305Sopenharmony_ci}
113fc223305Sopenharmony_ci
114fc223305Sopenharmony_civoid PreferencesObserverCounter::OnChange(
115fc223305Sopenharmony_ci    const std::map<std::string, OHOS::NativePreferences::PreferencesValue> &records)
116fc223305Sopenharmony_ci{
117fc223305Sopenharmony_ci    for (auto it = NOTIFY_KEYS_VECTOR.cbegin(); it != NOTIFY_KEYS_VECTOR.cend(); it++) {
118fc223305Sopenharmony_ci        for (auto iter = records.begin(); iter != records.end(); iter++) {
119fc223305Sopenharmony_ci            std::string key = iter->first;
120fc223305Sopenharmony_ci            if (key.compare(*it)) {
121fc223305Sopenharmony_ci                notifyTimes++;
122fc223305Sopenharmony_ci                return;
123fc223305Sopenharmony_ci            }
124fc223305Sopenharmony_ci        }
125fc223305Sopenharmony_ci    }
126fc223305Sopenharmony_ci}
127fc223305Sopenharmony_ci
128fc223305Sopenharmony_ciconst std::vector<std::string> PreferencesObserverCounter::NOTIFY_KEYS_VECTOR = { KEY_TEST_INT_ELEMENT,
129fc223305Sopenharmony_ci    KEY_TEST_LONG_ELEMENT, KEY_TEST_FLOAT_ELEMENT, KEY_TEST_BOOL_ELEMENT, KEY_TEST_STRING_ELEMENT };
130fc223305Sopenharmony_ci
131fc223305Sopenharmony_ciclass PreferencesObserverCrossProcess : public PreferencesObserver {
132fc223305Sopenharmony_cipublic:
133fc223305Sopenharmony_ci    virtual ~PreferencesObserverCrossProcess();
134fc223305Sopenharmony_ci    void OnChange(const std::string &key) override;
135fc223305Sopenharmony_ci    void Wait();
136fc223305Sopenharmony_ci
137fc223305Sopenharmony_ci    std::mutex mut;
138fc223305Sopenharmony_ci    std::condition_variable cond;
139fc223305Sopenharmony_ci    std::string notifyKey;
140fc223305Sopenharmony_ci    bool result;
141fc223305Sopenharmony_ci};
142fc223305Sopenharmony_ci
143fc223305Sopenharmony_ciPreferencesObserverCrossProcess::~PreferencesObserverCrossProcess()
144fc223305Sopenharmony_ci{
145fc223305Sopenharmony_ci}
146fc223305Sopenharmony_ci
147fc223305Sopenharmony_civoid PreferencesObserverCrossProcess::Wait()
148fc223305Sopenharmony_ci{
149fc223305Sopenharmony_ci    std::unique_lock<std::mutex> lock(mut);
150fc223305Sopenharmony_ci    if (!result) {
151fc223305Sopenharmony_ci        cond.wait(lock, [this] { return result; });
152fc223305Sopenharmony_ci    }
153fc223305Sopenharmony_ci}
154fc223305Sopenharmony_ci
155fc223305Sopenharmony_civoid PreferencesObserverCrossProcess::OnChange(const std::string &key)
156fc223305Sopenharmony_ci{
157fc223305Sopenharmony_ci    std::unique_lock<std::mutex> lock(mut);
158fc223305Sopenharmony_ci    notifyKey = key;
159fc223305Sopenharmony_ci    result = true;
160fc223305Sopenharmony_ci    cond.notify_all();
161fc223305Sopenharmony_ci}
162fc223305Sopenharmony_ci
163fc223305Sopenharmony_ci/**
164fc223305Sopenharmony_ci * @tc.name: NativePreferencesGroupIdTest_001
165fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetGroupId
166fc223305Sopenharmony_ci * @tc.type: FUNC
167fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
168fc223305Sopenharmony_ci * @tc.author: lirui
169fc223305Sopenharmony_ci */
170fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesGroupIdTest_001, TestSize.Level1)
171fc223305Sopenharmony_ci{
172fc223305Sopenharmony_ci    int errCode = E_OK;
173fc223305Sopenharmony_ci    Options option = Options("/data/test/test1", "ohos.test.demo", "2002001");
174fc223305Sopenharmony_ci    std::shared_ptr<Preferences> preferences = PreferencesHelper::GetPreferences(option, errCode);
175fc223305Sopenharmony_ci    EXPECT_EQ(errCode, E_OK);
176fc223305Sopenharmony_ci    EXPECT_EQ(preferences->GetGroupId(), "2002001");
177fc223305Sopenharmony_ci
178fc223305Sopenharmony_ci    preferences = nullptr;
179fc223305Sopenharmony_ci    int ret = PreferencesHelper::DeletePreferences("/data/test/test1");
180fc223305Sopenharmony_ci    EXPECT_EQ(ret, E_OK);
181fc223305Sopenharmony_ci}
182fc223305Sopenharmony_ci
183fc223305Sopenharmony_ci/**
184fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_001
185fc223305Sopenharmony_ci * @tc.desc: normal testcase of FlushSync
186fc223305Sopenharmony_ci * @tc.type: FUNC
187fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
188fc223305Sopenharmony_ci * @tc.author: xiuhongju
189fc223305Sopenharmony_ci */
190fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_001, TestSize.Level1)
191fc223305Sopenharmony_ci{
192fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 2);
193fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
194fc223305Sopenharmony_ci    pref->FlushSync();
195fc223305Sopenharmony_ci
196fc223305Sopenharmony_ci    int ret1 = pref->GetInt(KEY_TEST_INT_ELEMENT, 6);
197fc223305Sopenharmony_ci    EXPECT_EQ(ret1, 2);
198fc223305Sopenharmony_ci    std::string ret2 = pref->GetString(KEY_TEST_STRING_ELEMENT, "test1");
199fc223305Sopenharmony_ci    EXPECT_EQ(ret2, "test");
200fc223305Sopenharmony_ci}
201fc223305Sopenharmony_ci
202fc223305Sopenharmony_ci/**
203fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_002
204fc223305Sopenharmony_ci * @tc.desc: normal testcase of HasKey
205fc223305Sopenharmony_ci * @tc.type: FUNC
206fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
207fc223305Sopenharmony_ci * @tc.author: xiuhongju
208fc223305Sopenharmony_ci */
209fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_002, TestSize.Level1)
210fc223305Sopenharmony_ci{
211fc223305Sopenharmony_ci    bool ret = pref->HasKey(LONG_KEY + 'x');
212fc223305Sopenharmony_ci    EXPECT_EQ(ret, false);
213fc223305Sopenharmony_ci
214fc223305Sopenharmony_ci    ret = pref->HasKey(std::string());
215fc223305Sopenharmony_ci    EXPECT_EQ(ret, false);
216fc223305Sopenharmony_ci
217fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
218fc223305Sopenharmony_ci    ret = pref->HasKey(KEY_TEST_STRING_ELEMENT);
219fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
220fc223305Sopenharmony_ci
221fc223305Sopenharmony_ci    pref->FlushSync();
222fc223305Sopenharmony_ci    ret = pref->HasKey(KEY_TEST_STRING_ELEMENT);
223fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
224fc223305Sopenharmony_ci}
225fc223305Sopenharmony_ci
226fc223305Sopenharmony_ci/**
227fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_003
228fc223305Sopenharmony_ci * @tc.desc: normal testcase of pref
229fc223305Sopenharmony_ci * @tc.type: FUNC
230fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
231fc223305Sopenharmony_ci * @tc.author: xiuhongju
232fc223305Sopenharmony_ci */
233fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_003, TestSize.Level1)
234fc223305Sopenharmony_ci{
235fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test1");
236fc223305Sopenharmony_ci
237fc223305Sopenharmony_ci    std::string ret = pref->GetString(KEY_TEST_STRING_ELEMENT, "defaultvalue");
238fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test1");
239fc223305Sopenharmony_ci
240fc223305Sopenharmony_ci    pref->FlushSync();
241fc223305Sopenharmony_ci    ret = pref->GetString(KEY_TEST_STRING_ELEMENT, "defaultvalue");
242fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test1");
243fc223305Sopenharmony_ci}
244fc223305Sopenharmony_ci
245fc223305Sopenharmony_ci/**
246fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_004
247fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetBool
248fc223305Sopenharmony_ci * @tc.type: FUNC
249fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
250fc223305Sopenharmony_ci * @tc.author: xiuhongju
251fc223305Sopenharmony_ci */
252fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_004, TestSize.Level1)
253fc223305Sopenharmony_ci{
254fc223305Sopenharmony_ci    bool ret = pref->GetBool(LONG_KEY + 'x', true);
255fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
256fc223305Sopenharmony_ci
257fc223305Sopenharmony_ci    ret = pref->GetBool("", true);
258fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
259fc223305Sopenharmony_ci
260fc223305Sopenharmony_ci    pref->PutBool(KEY_TEST_BOOL_ELEMENT, false);
261fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "false");
262fc223305Sopenharmony_ci    pref->FlushSync();
263fc223305Sopenharmony_ci
264fc223305Sopenharmony_ci    ret = pref->GetBool(KEY_TEST_BOOL_ELEMENT, true);
265fc223305Sopenharmony_ci    EXPECT_EQ(ret, false);
266fc223305Sopenharmony_ci
267fc223305Sopenharmony_ci    ret = pref->GetBool(KEY_TEST_STRING_ELEMENT, true);
268fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
269fc223305Sopenharmony_ci}
270fc223305Sopenharmony_ci
271fc223305Sopenharmony_ci/**
272fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_005
273fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetFloat
274fc223305Sopenharmony_ci * @tc.type: FUNC
275fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
276fc223305Sopenharmony_ci * @tc.author: xiuhongju
277fc223305Sopenharmony_ci */
278fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_005, TestSize.Level1)
279fc223305Sopenharmony_ci{
280fc223305Sopenharmony_ci    float ret = pref->GetFloat(LONG_KEY + 'x', 3.0f);
281fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3.0f);
282fc223305Sopenharmony_ci
283fc223305Sopenharmony_ci    ret = pref->GetFloat("", 3.0f);
284fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3.0f);
285fc223305Sopenharmony_ci
286fc223305Sopenharmony_ci    pref->PutFloat(KEY_TEST_FLOAT_ELEMENT, 5.0f);
287fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "5.0");
288fc223305Sopenharmony_ci    pref->FlushSync();
289fc223305Sopenharmony_ci
290fc223305Sopenharmony_ci    ret = pref->GetFloat(KEY_TEST_FLOAT_ELEMENT, true);
291fc223305Sopenharmony_ci    EXPECT_EQ(ret, 5.0f);
292fc223305Sopenharmony_ci
293fc223305Sopenharmony_ci    ret = pref->GetFloat(KEY_TEST_STRING_ELEMENT, 3.0f);
294fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3.0f);
295fc223305Sopenharmony_ci}
296fc223305Sopenharmony_ci
297fc223305Sopenharmony_ci/**
298fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_006
299fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetInt
300fc223305Sopenharmony_ci * @tc.type: FUNC
301fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
302fc223305Sopenharmony_ci * @tc.author: xiuhongju
303fc223305Sopenharmony_ci */
304fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_006, TestSize.Level1)
305fc223305Sopenharmony_ci{
306fc223305Sopenharmony_ci    int ret = pref->GetInt(LONG_KEY + 'x', 35);
307fc223305Sopenharmony_ci    EXPECT_EQ(ret, 35);
308fc223305Sopenharmony_ci
309fc223305Sopenharmony_ci    ret = pref->GetInt("", 35);
310fc223305Sopenharmony_ci    EXPECT_EQ(ret, 35);
311fc223305Sopenharmony_ci
312fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 5);
313fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "5");
314fc223305Sopenharmony_ci    pref->FlushSync();
315fc223305Sopenharmony_ci
316fc223305Sopenharmony_ci    ret = pref->GetInt(KEY_TEST_INT_ELEMENT, 3);
317fc223305Sopenharmony_ci    EXPECT_EQ(ret, 5);
318fc223305Sopenharmony_ci
319fc223305Sopenharmony_ci    ret = pref->GetInt(KEY_TEST_STRING_ELEMENT, 3);
320fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3);
321fc223305Sopenharmony_ci}
322fc223305Sopenharmony_ci
323fc223305Sopenharmony_ci/**
324fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_007
325fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetLong
326fc223305Sopenharmony_ci * @tc.type: FUNC
327fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
328fc223305Sopenharmony_ci * @tc.author: xiuhongju
329fc223305Sopenharmony_ci */
330fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_007, TestSize.Level1)
331fc223305Sopenharmony_ci{
332fc223305Sopenharmony_ci    int64_t ret = pref->GetLong(LONG_KEY + 'x', 35L);
333fc223305Sopenharmony_ci    EXPECT_EQ(ret, 35L);
334fc223305Sopenharmony_ci
335fc223305Sopenharmony_ci    ret = pref->GetLong("", 35L);
336fc223305Sopenharmony_ci    EXPECT_EQ(ret, 35L);
337fc223305Sopenharmony_ci
338fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 5);
339fc223305Sopenharmony_ci    pref->PutLong(KEY_TEST_LONG_ELEMENT, 5L);
340fc223305Sopenharmony_ci    pref->FlushSync();
341fc223305Sopenharmony_ci
342fc223305Sopenharmony_ci    ret = pref->GetLong(KEY_TEST_INT_ELEMENT, 3L);
343fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3L);
344fc223305Sopenharmony_ci
345fc223305Sopenharmony_ci    ret = pref->GetLong(KEY_TEST_LONG_ELEMENT, 3L);
346fc223305Sopenharmony_ci    EXPECT_EQ(ret, 5L);
347fc223305Sopenharmony_ci}
348fc223305Sopenharmony_ci
349fc223305Sopenharmony_ci/**
350fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_008
351fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetString
352fc223305Sopenharmony_ci * @tc.type: FUNC
353fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
354fc223305Sopenharmony_ci * @tc.author: xiuhongju
355fc223305Sopenharmony_ci */
356fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_008, TestSize.Level1)
357fc223305Sopenharmony_ci{
358fc223305Sopenharmony_ci    std::string ret = pref->GetString(LONG_KEY + 'x', "test");
359fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test");
360fc223305Sopenharmony_ci
361fc223305Sopenharmony_ci    ret = pref->GetString("", "test");
362fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test");
363fc223305Sopenharmony_ci
364fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 5);
365fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_LONG_ELEMENT, "test");
366fc223305Sopenharmony_ci    pref->FlushSync();
367fc223305Sopenharmony_ci
368fc223305Sopenharmony_ci    ret = pref->GetString(KEY_TEST_INT_ELEMENT, "defaultvalue");
369fc223305Sopenharmony_ci    EXPECT_EQ(ret, "defaultvalue");
370fc223305Sopenharmony_ci
371fc223305Sopenharmony_ci    ret = pref->GetString(KEY_TEST_LONG_ELEMENT, "defaultvalue");
372fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test");
373fc223305Sopenharmony_ci}
374fc223305Sopenharmony_ci
375fc223305Sopenharmony_ci/**
376fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_009
377fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetDefValue
378fc223305Sopenharmony_ci * @tc.type: FUNC
379fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
380fc223305Sopenharmony_ci * @tc.author: xiuhongju
381fc223305Sopenharmony_ci */
382fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_009, TestSize.Level1)
383fc223305Sopenharmony_ci{
384fc223305Sopenharmony_ci    int ret0 = pref->GetInt(KEY_TEST_INT_ELEMENT, -1);
385fc223305Sopenharmony_ci    EXPECT_EQ(ret0, -1);
386fc223305Sopenharmony_ci
387fc223305Sopenharmony_ci    float ret1 = pref->GetFloat(KEY_TEST_FLOAT_ELEMENT, 1.0f);
388fc223305Sopenharmony_ci    EXPECT_EQ(ret1, 1.0f);
389fc223305Sopenharmony_ci
390fc223305Sopenharmony_ci    int64_t ret2 = pref->GetLong(KEY_TEST_LONG_ELEMENT, 10000L);
391fc223305Sopenharmony_ci    EXPECT_EQ(ret2, 10000L);
392fc223305Sopenharmony_ci
393fc223305Sopenharmony_ci    bool ret3 = pref->GetBool(KEY_TEST_BOOL_ELEMENT, true);
394fc223305Sopenharmony_ci    EXPECT_EQ(ret3, true);
395fc223305Sopenharmony_ci
396fc223305Sopenharmony_ci    std::string ret4 = pref->GetString(KEY_TEST_STRING_ELEMENT, "test");
397fc223305Sopenharmony_ci    EXPECT_EQ(ret4, "test");
398fc223305Sopenharmony_ci}
399fc223305Sopenharmony_ci
400fc223305Sopenharmony_ci/**
401fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_010
402fc223305Sopenharmony_ci * @tc.desc: normal testcase of PutBool
403fc223305Sopenharmony_ci * @tc.type: FUNC
404fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
405fc223305Sopenharmony_ci * @tc.author: xiuhongju
406fc223305Sopenharmony_ci */
407fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_010, TestSize.Level1)
408fc223305Sopenharmony_ci{
409fc223305Sopenharmony_ci    pref->PutBool(LONG_KEY + 'x', true);
410fc223305Sopenharmony_ci    pref->PutBool("", true);
411fc223305Sopenharmony_ci    pref->FlushSync();
412fc223305Sopenharmony_ci
413fc223305Sopenharmony_ci    bool ret = pref->GetBool(LONG_KEY + 'x', false);
414fc223305Sopenharmony_ci    EXPECT_EQ(ret, false);
415fc223305Sopenharmony_ci    ret = pref->GetBool("", false);
416fc223305Sopenharmony_ci    EXPECT_EQ(ret, false);
417fc223305Sopenharmony_ci
418fc223305Sopenharmony_ci    pref->PutBool(LONG_KEY, true);
419fc223305Sopenharmony_ci    pref->PutBool(KEY_TEST_BOOL_ELEMENT, true);
420fc223305Sopenharmony_ci    pref->FlushSync();
421fc223305Sopenharmony_ci
422fc223305Sopenharmony_ci    ret = pref->GetBool(LONG_KEY, false);
423fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
424fc223305Sopenharmony_ci    ret = pref->GetBool(KEY_TEST_BOOL_ELEMENT, false);
425fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
426fc223305Sopenharmony_ci}
427fc223305Sopenharmony_ci
428fc223305Sopenharmony_ci/**
429fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_011
430fc223305Sopenharmony_ci * @tc.desc: normal testcase of PutFloat
431fc223305Sopenharmony_ci * @tc.type: FUNC
432fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
433fc223305Sopenharmony_ci * @tc.author: xiuhongju
434fc223305Sopenharmony_ci */
435fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_011, TestSize.Level1)
436fc223305Sopenharmony_ci{
437fc223305Sopenharmony_ci    pref->PutFloat(LONG_KEY + 'x', 3.0f);
438fc223305Sopenharmony_ci    pref->PutFloat("", 3.0f);
439fc223305Sopenharmony_ci    pref->FlushSync();
440fc223305Sopenharmony_ci
441fc223305Sopenharmony_ci    float ret = pref->GetFloat(LONG_KEY + 'x', 1.0f);
442fc223305Sopenharmony_ci    EXPECT_EQ(ret, 1.0f);
443fc223305Sopenharmony_ci    ret = pref->GetFloat("", 1.0f);
444fc223305Sopenharmony_ci    EXPECT_EQ(ret, 1.0f);
445fc223305Sopenharmony_ci
446fc223305Sopenharmony_ci    pref->PutFloat(LONG_KEY, 3.0f);
447fc223305Sopenharmony_ci    pref->PutFloat(KEY_TEST_FLOAT_ELEMENT, 3.0f);
448fc223305Sopenharmony_ci    pref->FlushSync();
449fc223305Sopenharmony_ci
450fc223305Sopenharmony_ci    ret = pref->GetFloat(LONG_KEY, 1.0f);
451fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3.0f);
452fc223305Sopenharmony_ci    ret = pref->GetFloat(KEY_TEST_FLOAT_ELEMENT, 1.0f);
453fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3.0f);
454fc223305Sopenharmony_ci}
455fc223305Sopenharmony_ci
456fc223305Sopenharmony_ci/**
457fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_012
458fc223305Sopenharmony_ci * @tc.desc: normal testcase of PutInt
459fc223305Sopenharmony_ci * @tc.type: FUNC
460fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
461fc223305Sopenharmony_ci * @tc.author: xiuhongju
462fc223305Sopenharmony_ci */
463fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_012, TestSize.Level1)
464fc223305Sopenharmony_ci{
465fc223305Sopenharmony_ci    pref->PutInt(LONG_KEY + 'x', 3);
466fc223305Sopenharmony_ci    pref->PutInt("", 3);
467fc223305Sopenharmony_ci    pref->FlushSync();
468fc223305Sopenharmony_ci
469fc223305Sopenharmony_ci    int ret = pref->GetInt(LONG_KEY + 'x', 1);
470fc223305Sopenharmony_ci    EXPECT_EQ(ret, 1);
471fc223305Sopenharmony_ci    ret = pref->GetInt("", 1);
472fc223305Sopenharmony_ci    EXPECT_EQ(ret, 1);
473fc223305Sopenharmony_ci
474fc223305Sopenharmony_ci    pref->PutInt(LONG_KEY, 3);
475fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 3);
476fc223305Sopenharmony_ci    pref->FlushSync();
477fc223305Sopenharmony_ci
478fc223305Sopenharmony_ci    ret = pref->GetInt(LONG_KEY, 1);
479fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3);
480fc223305Sopenharmony_ci    ret = pref->GetInt(KEY_TEST_INT_ELEMENT, 1);
481fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3);
482fc223305Sopenharmony_ci}
483fc223305Sopenharmony_ci
484fc223305Sopenharmony_ci/**
485fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_013
486fc223305Sopenharmony_ci * @tc.desc: normal testcase of PutLong
487fc223305Sopenharmony_ci * @tc.type: FUNC
488fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
489fc223305Sopenharmony_ci * @tc.author: xiuhongju
490fc223305Sopenharmony_ci */
491fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_013, TestSize.Level1)
492fc223305Sopenharmony_ci{
493fc223305Sopenharmony_ci    pref->PutLong(LONG_KEY + 'x', 3L);
494fc223305Sopenharmony_ci    pref->PutLong("", 3L);
495fc223305Sopenharmony_ci    pref->FlushSync();
496fc223305Sopenharmony_ci
497fc223305Sopenharmony_ci    int64_t ret = pref->GetLong(LONG_KEY + 'x', 1L);
498fc223305Sopenharmony_ci    EXPECT_EQ(ret, 1L);
499fc223305Sopenharmony_ci    ret = pref->GetLong("", 1L);
500fc223305Sopenharmony_ci    EXPECT_EQ(ret, 1L);
501fc223305Sopenharmony_ci
502fc223305Sopenharmony_ci    pref->PutLong(LONG_KEY, 3L);
503fc223305Sopenharmony_ci    pref->PutLong(KEY_TEST_LONG_ELEMENT, 3L);
504fc223305Sopenharmony_ci    pref->FlushSync();
505fc223305Sopenharmony_ci
506fc223305Sopenharmony_ci    ret = pref->GetLong(LONG_KEY, 1L);
507fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3L);
508fc223305Sopenharmony_ci    ret = pref->GetLong(KEY_TEST_LONG_ELEMENT, 1L);
509fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3L);
510fc223305Sopenharmony_ci}
511fc223305Sopenharmony_ci
512fc223305Sopenharmony_ci/**
513fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_014
514fc223305Sopenharmony_ci * @tc.desc: normal testcase of PutString
515fc223305Sopenharmony_ci * @tc.type: FUNC
516fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
517fc223305Sopenharmony_ci * @tc.author: xiuhongju
518fc223305Sopenharmony_ci */
519fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_014, TestSize.Level1)
520fc223305Sopenharmony_ci{
521fc223305Sopenharmony_ci    pref->PutString(LONG_KEY + 'x', "test");
522fc223305Sopenharmony_ci    pref->PutString("", "test");
523fc223305Sopenharmony_ci    pref->FlushSync();
524fc223305Sopenharmony_ci
525fc223305Sopenharmony_ci    std::string ret = pref->GetString(LONG_KEY + 'x', "defaultValue");
526fc223305Sopenharmony_ci    EXPECT_EQ(ret, "defaultValue");
527fc223305Sopenharmony_ci    ret = pref->GetString("", "defaultValue");
528fc223305Sopenharmony_ci    EXPECT_EQ(ret, "defaultValue");
529fc223305Sopenharmony_ci
530fc223305Sopenharmony_ci    pref->PutString(LONG_KEY, "test");
531fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
532fc223305Sopenharmony_ci    pref->FlushSync();
533fc223305Sopenharmony_ci
534fc223305Sopenharmony_ci    ret = pref->GetString(LONG_KEY, "defaultValue");
535fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test");
536fc223305Sopenharmony_ci    ret = pref->GetString(KEY_TEST_STRING_ELEMENT, "defaultValue");
537fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test");
538fc223305Sopenharmony_ci}
539fc223305Sopenharmony_ci
540fc223305Sopenharmony_ci/**
541fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_015
542fc223305Sopenharmony_ci * @tc.desc: normal testcase of Delete
543fc223305Sopenharmony_ci * @tc.type: FUNC
544fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
545fc223305Sopenharmony_ci * @tc.author: xiuhongju
546fc223305Sopenharmony_ci */
547fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_015, TestSize.Level1)
548fc223305Sopenharmony_ci{
549fc223305Sopenharmony_ci    pref->PutString("test", "remove");
550fc223305Sopenharmony_ci    pref->FlushSync();
551fc223305Sopenharmony_ci
552fc223305Sopenharmony_ci    std::string ret = pref->GetString("test", "defaultValue");
553fc223305Sopenharmony_ci    EXPECT_EQ(ret, "remove");
554fc223305Sopenharmony_ci
555fc223305Sopenharmony_ci    pref->Delete("test");
556fc223305Sopenharmony_ci    pref->FlushSync();
557fc223305Sopenharmony_ci    ret = pref->GetString("test", "defaultValue");
558fc223305Sopenharmony_ci    EXPECT_EQ(ret, "defaultValue");
559fc223305Sopenharmony_ci}
560fc223305Sopenharmony_ci
561fc223305Sopenharmony_ci/**
562fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_016
563fc223305Sopenharmony_ci * @tc.desc: normal testcase of RegisterPreferencesObserver
564fc223305Sopenharmony_ci * @tc.type: FUNC
565fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
566fc223305Sopenharmony_ci * @tc.author: xiuhongju
567fc223305Sopenharmony_ci */
568fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_016, TestSize.Level1)
569fc223305Sopenharmony_ci{
570fc223305Sopenharmony_ci    std::shared_ptr<PreferencesObserver> counter = std::make_shared<PreferencesObserverCounter>();
571fc223305Sopenharmony_ci    pref->RegisterObserver(counter);
572fc223305Sopenharmony_ci
573fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
574fc223305Sopenharmony_ci    pref->FlushSync();
575fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<PreferencesObserverCounter *>(counter.get())->notifyTimes, 1);
576fc223305Sopenharmony_ci
577fc223305Sopenharmony_ci    /* same value */
578fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 2);
579fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
580fc223305Sopenharmony_ci    pref->FlushSync();
581fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<PreferencesObserverCounter *>(counter.get())->notifyTimes, 2);
582fc223305Sopenharmony_ci
583fc223305Sopenharmony_ci    pref->UnRegisterObserver(counter);
584fc223305Sopenharmony_ci}
585fc223305Sopenharmony_ci
586fc223305Sopenharmony_ci/**
587fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_017
588fc223305Sopenharmony_ci * @tc.desc: normal testcase of UnRegisterPreferencesObserver
589fc223305Sopenharmony_ci * @tc.type: FUNC
590fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
591fc223305Sopenharmony_ci * @tc.author: xiuhongju
592fc223305Sopenharmony_ci */
593fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_017, TestSize.Level1)
594fc223305Sopenharmony_ci{
595fc223305Sopenharmony_ci    std::shared_ptr<PreferencesObserver> counter = std::make_shared<PreferencesObserverCounter>();
596fc223305Sopenharmony_ci    pref->RegisterObserver(counter);
597fc223305Sopenharmony_ci
598fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 2);
599fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
600fc223305Sopenharmony_ci    pref->FlushSync();
601fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<PreferencesObserverCounter *>(counter.get())->notifyTimes, 2);
602fc223305Sopenharmony_ci
603fc223305Sopenharmony_ci    pref->UnRegisterObserver(counter);
604fc223305Sopenharmony_ci
605fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 6);
606fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test1");
607fc223305Sopenharmony_ci    pref->FlushSync();
608fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<PreferencesObserverCounter *>(counter.get())->notifyTimes, 2);
609fc223305Sopenharmony_ci}
610fc223305Sopenharmony_ci
611fc223305Sopenharmony_ci/**
612fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_018
613fc223305Sopenharmony_ci * @tc.desc: normal testcase of Clear
614fc223305Sopenharmony_ci * @tc.type: FUNC
615fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
616fc223305Sopenharmony_ci * @tc.author: xiuhongju
617fc223305Sopenharmony_ci */
618fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_018, TestSize.Level1)
619fc223305Sopenharmony_ci{
620fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
621fc223305Sopenharmony_ci    pref->PutInt(KEY_TEST_INT_ELEMENT, 3);
622fc223305Sopenharmony_ci    pref->FlushSync();
623fc223305Sopenharmony_ci
624fc223305Sopenharmony_ci    pref->Clear();
625fc223305Sopenharmony_ci    std::string ret = pref->GetString(KEY_TEST_STRING_ELEMENT, "defaultvalue");
626fc223305Sopenharmony_ci    EXPECT_EQ(ret, "defaultvalue");
627fc223305Sopenharmony_ci    int ret1 = pref->GetInt(KEY_TEST_INT_ELEMENT, 0);
628fc223305Sopenharmony_ci    EXPECT_EQ(ret1, 0);
629fc223305Sopenharmony_ci
630fc223305Sopenharmony_ci    pref->FlushSync();
631fc223305Sopenharmony_ci    ret = pref->GetString(KEY_TEST_STRING_ELEMENT, "defaultvalue");
632fc223305Sopenharmony_ci    EXPECT_EQ(ret, "defaultvalue");
633fc223305Sopenharmony_ci    ret1 = pref->GetInt(KEY_TEST_INT_ELEMENT, 0);
634fc223305Sopenharmony_ci    EXPECT_EQ(ret1, 0);
635fc223305Sopenharmony_ci}
636fc223305Sopenharmony_ci
637fc223305Sopenharmony_ci/**
638fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_019
639fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetDouble
640fc223305Sopenharmony_ci * @tc.type: FUNC
641fc223305Sopenharmony_ci * @tc.require: Na
642fc223305Sopenharmony_ci * @tc.author: mang tsang
643fc223305Sopenharmony_ci */
644fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_019, TestSize.Level1)
645fc223305Sopenharmony_ci{
646fc223305Sopenharmony_ci    double ret = pref->GetDouble(LONG_KEY + 'x', 35.99999);
647fc223305Sopenharmony_ci    EXPECT_EQ(ret, 35.99999);
648fc223305Sopenharmony_ci
649fc223305Sopenharmony_ci    ret = pref->GetDouble("", 35.99999);
650fc223305Sopenharmony_ci    EXPECT_EQ(ret, 35.99999);
651fc223305Sopenharmony_ci
652fc223305Sopenharmony_ci    pref->PutDouble(KEY_TEST_DOUBLE_ELEMENT, (std::numeric_limits<double>::max)());
653fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "5.99");
654fc223305Sopenharmony_ci    pref->FlushSync();
655fc223305Sopenharmony_ci
656fc223305Sopenharmony_ci    ret = pref->GetDouble(KEY_TEST_DOUBLE_ELEMENT, 3.99);
657fc223305Sopenharmony_ci    EXPECT_EQ(ret, (std::numeric_limits<double>::max)());
658fc223305Sopenharmony_ci
659fc223305Sopenharmony_ci    ret = pref->GetDouble(KEY_TEST_STRING_ELEMENT, 3.99);
660fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3.99);
661fc223305Sopenharmony_ci}
662fc223305Sopenharmony_ci
663fc223305Sopenharmony_ci/**
664fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_020
665fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetDouble without defaultValue
666fc223305Sopenharmony_ci * @tc.type: FUNC
667fc223305Sopenharmony_ci * @tc.require: Na
668fc223305Sopenharmony_ci * @tc.author: lijuntao
669fc223305Sopenharmony_ci */
670fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_020, TestSize.Level1)
671fc223305Sopenharmony_ci{
672fc223305Sopenharmony_ci    int errCode;
673fc223305Sopenharmony_ci    std::shared_ptr<Preferences> pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
674fc223305Sopenharmony_ci    pref1->PutDouble(KEY_TEST_DOUBLE_ELEMENT, (std::numeric_limits<double>::max)());
675fc223305Sopenharmony_ci    pref1->FlushSync();
676fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
677fc223305Sopenharmony_ci    pref1.reset();
678fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
679fc223305Sopenharmony_ci    double ret = pref1->GetDouble(KEY_TEST_DOUBLE_ELEMENT);
680fc223305Sopenharmony_ci    EXPECT_EQ(ret, (std::numeric_limits<double>::max)());
681fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
682fc223305Sopenharmony_ci}
683fc223305Sopenharmony_ci
684fc223305Sopenharmony_ci/**
685fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_021
686fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetString without defaultValue
687fc223305Sopenharmony_ci * @tc.type: FUNC
688fc223305Sopenharmony_ci * @tc.require: Na
689fc223305Sopenharmony_ci * @tc.author: lijuntao
690fc223305Sopenharmony_ci */
691fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_021, TestSize.Level1)
692fc223305Sopenharmony_ci{
693fc223305Sopenharmony_ci    int errCode;
694fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
695fc223305Sopenharmony_ci    pref1->PutString(LONG_KEY, "test");
696fc223305Sopenharmony_ci    pref1->PutString(KEY_TEST_STRING_ELEMENT, "test1 test2");
697fc223305Sopenharmony_ci    pref1->FlushSync();
698fc223305Sopenharmony_ci
699fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
700fc223305Sopenharmony_ci    pref1.reset();
701fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
702fc223305Sopenharmony_ci
703fc223305Sopenharmony_ci    std::string ret = pref1->GetString(LONG_KEY);
704fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test");
705fc223305Sopenharmony_ci    ret = pref1->GetString(KEY_TEST_STRING_ELEMENT);
706fc223305Sopenharmony_ci    EXPECT_EQ(ret, "test1 test2");
707fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
708fc223305Sopenharmony_ci}
709fc223305Sopenharmony_ci
710fc223305Sopenharmony_ci/**
711fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_022
712fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetLong without defaultValue
713fc223305Sopenharmony_ci * @tc.type: FUNC
714fc223305Sopenharmony_ci * @tc.require: Na
715fc223305Sopenharmony_ci * @tc.author: lijuntao
716fc223305Sopenharmony_ci */
717fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_022, TestSize.Level1)
718fc223305Sopenharmony_ci{
719fc223305Sopenharmony_ci    int errCode;
720fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
721fc223305Sopenharmony_ci    pref1->PutLong(LONG_KEY, 3L);
722fc223305Sopenharmony_ci    pref1->PutLong(KEY_TEST_LONG_ELEMENT, 3L);
723fc223305Sopenharmony_ci    pref1->FlushSync();
724fc223305Sopenharmony_ci
725fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
726fc223305Sopenharmony_ci    pref1.reset();
727fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
728fc223305Sopenharmony_ci
729fc223305Sopenharmony_ci    int64_t ret = pref1->GetLong(LONG_KEY);
730fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3L);
731fc223305Sopenharmony_ci    ret = pref1->GetLong(KEY_TEST_LONG_ELEMENT);
732fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3L);
733fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
734fc223305Sopenharmony_ci}
735fc223305Sopenharmony_ci
736fc223305Sopenharmony_ci/**
737fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_023
738fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetInt without defaultValue
739fc223305Sopenharmony_ci * @tc.type: FUNC
740fc223305Sopenharmony_ci * @tc.require: Na
741fc223305Sopenharmony_ci * @tc.author: lijuntao
742fc223305Sopenharmony_ci */
743fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_023, TestSize.Level1)
744fc223305Sopenharmony_ci{
745fc223305Sopenharmony_ci    int errCode;
746fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
747fc223305Sopenharmony_ci    pref1->PutInt(LONG_KEY, 3);
748fc223305Sopenharmony_ci    pref1->PutInt(KEY_TEST_INT_ELEMENT, 3);
749fc223305Sopenharmony_ci    pref1->FlushSync();
750fc223305Sopenharmony_ci
751fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
752fc223305Sopenharmony_ci    pref1.reset();
753fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
754fc223305Sopenharmony_ci
755fc223305Sopenharmony_ci    int32_t ret = pref1->GetInt(LONG_KEY);
756fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3);
757fc223305Sopenharmony_ci    ret = pref1->GetInt(KEY_TEST_INT_ELEMENT);
758fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3);
759fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
760fc223305Sopenharmony_ci}
761fc223305Sopenharmony_ci
762fc223305Sopenharmony_ci/**
763fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_024
764fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetFloat without defaultValue
765fc223305Sopenharmony_ci * @tc.type: FUNC
766fc223305Sopenharmony_ci * @tc.require: Na
767fc223305Sopenharmony_ci * @tc.author: lijuntao
768fc223305Sopenharmony_ci */
769fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_024, TestSize.Level1)
770fc223305Sopenharmony_ci{
771fc223305Sopenharmony_ci    int errCode;
772fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
773fc223305Sopenharmony_ci    pref1->PutFloat(LONG_KEY, 3.0f);
774fc223305Sopenharmony_ci    pref1->PutFloat(KEY_TEST_FLOAT_ELEMENT, 3.0f);
775fc223305Sopenharmony_ci    pref1->FlushSync();
776fc223305Sopenharmony_ci
777fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
778fc223305Sopenharmony_ci    pref1.reset();
779fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
780fc223305Sopenharmony_ci
781fc223305Sopenharmony_ci    float ret = pref1->GetFloat(LONG_KEY);
782fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3.0f);
783fc223305Sopenharmony_ci    ret = pref1->GetFloat(KEY_TEST_FLOAT_ELEMENT);
784fc223305Sopenharmony_ci    EXPECT_EQ(ret, 3.0f);
785fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
786fc223305Sopenharmony_ci}
787fc223305Sopenharmony_ci
788fc223305Sopenharmony_ci/**
789fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_025
790fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetBool without defaultValue
791fc223305Sopenharmony_ci * @tc.type: FUNC
792fc223305Sopenharmony_ci * @tc.require: Na
793fc223305Sopenharmony_ci * @tc.author: lijuntao
794fc223305Sopenharmony_ci */
795fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_025, TestSize.Level1)
796fc223305Sopenharmony_ci{
797fc223305Sopenharmony_ci    int errCode;
798fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
799fc223305Sopenharmony_ci    pref1->PutBool(LONG_KEY, true);
800fc223305Sopenharmony_ci    pref1->PutBool(KEY_TEST_BOOL_ELEMENT, true);
801fc223305Sopenharmony_ci    pref1->FlushSync();
802fc223305Sopenharmony_ci
803fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
804fc223305Sopenharmony_ci    pref1.reset();
805fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
806fc223305Sopenharmony_ci
807fc223305Sopenharmony_ci    bool ret = pref1->GetBool(LONG_KEY);
808fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
809fc223305Sopenharmony_ci    ret = pref1->GetBool(KEY_TEST_BOOL_ELEMENT);
810fc223305Sopenharmony_ci    EXPECT_EQ(ret, true);
811fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
812fc223305Sopenharmony_ci}
813fc223305Sopenharmony_ci
814fc223305Sopenharmony_ci/**
815fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_026
816fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetArray
817fc223305Sopenharmony_ci * @tc.type: FUNC
818fc223305Sopenharmony_ci * @tc.require: Na
819fc223305Sopenharmony_ci * @tc.author: changjiaxing
820fc223305Sopenharmony_ci */
821fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_026, TestSize.Level1)
822fc223305Sopenharmony_ci{
823fc223305Sopenharmony_ci    int errCode;
824fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
825fc223305Sopenharmony_ci    std::vector<std::string> stringArray = { "str1", "str2" };
826fc223305Sopenharmony_ci    std::vector<bool> boolArray = { false, true };
827fc223305Sopenharmony_ci    std::vector<double> doubleArray = { 0.1, 0.2 };
828fc223305Sopenharmony_ci    std::vector<uint8_t> uint8Array = { 1, 2, 3, 4, 5, 6, 7 };
829fc223305Sopenharmony_ci    pref1->Put(KEY_TEST_STRING_ARRAY_ELEMENT, stringArray);
830fc223305Sopenharmony_ci    pref1->Put(KEY_TEST_BOOL_ARRAY_ELEMENT, boolArray);
831fc223305Sopenharmony_ci    pref1->Put(KEY_TEST_DOUBLE_ARRAY_ELEMENT, doubleArray);
832fc223305Sopenharmony_ci    pref1->Put(KEY_TEST_UINT8_ARRAY_ELEMENT, uint8Array);
833fc223305Sopenharmony_ci    pref1->FlushSync();
834fc223305Sopenharmony_ci
835fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
836fc223305Sopenharmony_ci    pref1.reset();
837fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
838fc223305Sopenharmony_ci
839fc223305Sopenharmony_ci    PreferencesValue defValue(static_cast<int64_t>(0));
840fc223305Sopenharmony_ci    PreferencesValue stringArrayRes = pref1->Get(KEY_TEST_STRING_ARRAY_ELEMENT, defValue);
841fc223305Sopenharmony_ci    EXPECT_EQ(stringArrayRes.IsStringArray(), true);
842fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<std::vector<std::string>>(stringArrayRes), stringArray);
843fc223305Sopenharmony_ci
844fc223305Sopenharmony_ci    PreferencesValue boolArrayRes = pref1->Get(KEY_TEST_BOOL_ARRAY_ELEMENT, defValue);
845fc223305Sopenharmony_ci    EXPECT_EQ(boolArrayRes.IsBoolArray(), true);
846fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<std::vector<bool>>(boolArrayRes), boolArray);
847fc223305Sopenharmony_ci
848fc223305Sopenharmony_ci    PreferencesValue doubleArrayRes = pref1->Get(KEY_TEST_DOUBLE_ARRAY_ELEMENT, defValue);
849fc223305Sopenharmony_ci    EXPECT_EQ(doubleArrayRes.IsDoubleArray(), true);
850fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<std::vector<double>>(doubleArrayRes), doubleArray);
851fc223305Sopenharmony_ci
852fc223305Sopenharmony_ci    PreferencesValue uint8ArrayRes = pref1->Get(KEY_TEST_UINT8_ARRAY_ELEMENT, defValue);
853fc223305Sopenharmony_ci    EXPECT_EQ(uint8ArrayRes.IsUint8Array(), true);
854fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<std::vector<uint8_t>>(uint8ArrayRes), uint8Array);
855fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
856fc223305Sopenharmony_ci}
857fc223305Sopenharmony_ci
858fc223305Sopenharmony_ci/**
859fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_027
860fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetAll
861fc223305Sopenharmony_ci * @tc.type: FUNC
862fc223305Sopenharmony_ci * @tc.require: Na
863fc223305Sopenharmony_ci * @tc.author: changjiaxing
864fc223305Sopenharmony_ci */
865fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_027, TestSize.Level1)
866fc223305Sopenharmony_ci{
867fc223305Sopenharmony_ci    int errCode;
868fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
869fc223305Sopenharmony_ci
870fc223305Sopenharmony_ci    std::map<std::string, PreferencesValue> map = { { KEY_TEST_INT_ELEMENT, 1 }, { KEY_TEST_FLOAT_ELEMENT, 0.1 },
871fc223305Sopenharmony_ci        { KEY_TEST_BOOL_ELEMENT, false }, { KEY_TEST_STRING_ELEMENT, "test" } };
872fc223305Sopenharmony_ci
873fc223305Sopenharmony_ci    for (auto i : map) {
874fc223305Sopenharmony_ci        pref1->Put(i.first, i.second);
875fc223305Sopenharmony_ci    }
876fc223305Sopenharmony_ci
877fc223305Sopenharmony_ci    auto ret = pref1->GetAll();
878fc223305Sopenharmony_ci
879fc223305Sopenharmony_ci    EXPECT_EQ(map.size(), ret.size());
880fc223305Sopenharmony_ci    auto iter1 = map.begin();
881fc223305Sopenharmony_ci    auto iter2 = ret.begin();
882fc223305Sopenharmony_ci    for (;iter1 != map.end(); ++iter1, ++iter2) {
883fc223305Sopenharmony_ci        EXPECT_EQ(iter1->first, iter2->first);
884fc223305Sopenharmony_ci        bool isequa = false;
885fc223305Sopenharmony_ci        if (iter1->second == iter2->second) {
886fc223305Sopenharmony_ci            isequa = true;
887fc223305Sopenharmony_ci        }
888fc223305Sopenharmony_ci        EXPECT_TRUE(isequa);
889fc223305Sopenharmony_ci    }
890fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
891fc223305Sopenharmony_ci}
892fc223305Sopenharmony_ci
893fc223305Sopenharmony_ci/**
894fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_028
895fc223305Sopenharmony_ci * @tc.desc: Cross process subscription testing
896fc223305Sopenharmony_ci * @tc.type: FUNC
897fc223305Sopenharmony_ci * @tc.require: Na
898fc223305Sopenharmony_ci * @tc.author: changjiaxing
899fc223305Sopenharmony_ci */
900fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_028, TestSize.Level1)
901fc223305Sopenharmony_ci{
902fc223305Sopenharmony_ci    std::shared_ptr<PreferencesObserverCrossProcess> counter = std::make_shared<PreferencesObserverCrossProcess>();
903fc223305Sopenharmony_ci    int ret = pref->RegisterObserver(counter, RegisterMode::MULTI_PRECESS_CHANGE);
904fc223305Sopenharmony_ci    EXPECT_EQ(ret, E_OK);
905fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
906fc223305Sopenharmony_ci    pref->FlushSync();
907fc223305Sopenharmony_ci    counter->Wait();
908fc223305Sopenharmony_ci    EXPECT_EQ(counter->notifyKey, KEY_TEST_STRING_ELEMENT);
909fc223305Sopenharmony_ci
910fc223305Sopenharmony_ci    ret = pref->UnRegisterObserver(counter, RegisterMode::MULTI_PRECESS_CHANGE);
911fc223305Sopenharmony_ci    EXPECT_EQ(ret, E_OK);
912fc223305Sopenharmony_ci}
913fc223305Sopenharmony_ci
914fc223305Sopenharmony_ci/**
915fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_029
916fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetBigInt without defaultValue
917fc223305Sopenharmony_ci * @tc.type: FUNC
918fc223305Sopenharmony_ci * @tc.require: Na
919fc223305Sopenharmony_ci * @tc.author: changjiaxing
920fc223305Sopenharmony_ci */
921fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_029, TestSize.Level1)
922fc223305Sopenharmony_ci{
923fc223305Sopenharmony_ci    int errCode;
924fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
925fc223305Sopenharmony_ci    std::vector<uint64_t> words = { 1, 2, 3 };
926fc223305Sopenharmony_ci    BigInt bigint1(words, 0);
927fc223305Sopenharmony_ci    BigInt bigint2(words, 1);
928fc223305Sopenharmony_ci    pref1->Put(LONG_KEY, bigint1);
929fc223305Sopenharmony_ci    pref1->Put(KEY_TEST_BIGINT_ELEMENT, bigint2);
930fc223305Sopenharmony_ci    pref1->FlushSync();
931fc223305Sopenharmony_ci
932fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
933fc223305Sopenharmony_ci    pref1.reset();
934fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
935fc223305Sopenharmony_ci
936fc223305Sopenharmony_ci    BigInt ret = pref1->Get(LONG_KEY, BigInt());
937fc223305Sopenharmony_ci    EXPECT_EQ(ret, bigint1);
938fc223305Sopenharmony_ci    ret = pref1->Get(KEY_TEST_BIGINT_ELEMENT, BigInt());
939fc223305Sopenharmony_ci    EXPECT_EQ(ret, bigint2);
940fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
941fc223305Sopenharmony_ci}
942fc223305Sopenharmony_ci
943fc223305Sopenharmony_ci/**
944fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_030
945fc223305Sopenharmony_ci * @tc.desc: normal testcase of GetBigInt without defaultValue
946fc223305Sopenharmony_ci * @tc.type: FUNC
947fc223305Sopenharmony_ci * @tc.require: Na
948fc223305Sopenharmony_ci * @tc.author: changjiaxing
949fc223305Sopenharmony_ci */
950fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_030, TestSize.Level1)
951fc223305Sopenharmony_ci{
952fc223305Sopenharmony_ci    int errCode;
953fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
954fc223305Sopenharmony_ci    std::vector<uint64_t> words = {};
955fc223305Sopenharmony_ci    BigInt bigint1(words, 0);
956fc223305Sopenharmony_ci    errCode = pref1->Put(LONG_KEY, bigint1);
957fc223305Sopenharmony_ci    EXPECT_EQ(errCode, E_ERROR);
958fc223305Sopenharmony_ci
959fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
960fc223305Sopenharmony_ci}
961fc223305Sopenharmony_ci
962fc223305Sopenharmony_ci/**
963fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_031
964fc223305Sopenharmony_ci * @tc.desc: normal testcase of get object
965fc223305Sopenharmony_ci * @tc.type: FUNC
966fc223305Sopenharmony_ci * @tc.require: Na
967fc223305Sopenharmony_ci * @tc.author: bty
968fc223305Sopenharmony_ci */
969fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_031, TestSize.Level1)
970fc223305Sopenharmony_ci{
971fc223305Sopenharmony_ci    int errCode;
972fc223305Sopenharmony_ci    auto pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
973fc223305Sopenharmony_ci    Object object("{\"key1\":\"value1\",\"key2\":222}");
974fc223305Sopenharmony_ci    EXPECT_EQ(pref1->Put(KEY_TEST_OBJECT_ELEMENT, object), E_OK);
975fc223305Sopenharmony_ci    pref1->FlushSync();
976fc223305Sopenharmony_ci
977fc223305Sopenharmony_ci    PreferencesHelper::RemovePreferencesFromCache("/data/test/test1");
978fc223305Sopenharmony_ci    pref1.reset();
979fc223305Sopenharmony_ci    pref1 = PreferencesHelper::GetPreferences("/data/test/test1", errCode);
980fc223305Sopenharmony_ci    PreferencesValue defValue(static_cast<int64_t>(0));
981fc223305Sopenharmony_ci    PreferencesValue res = pref1->Get(KEY_TEST_OBJECT_ELEMENT, defValue);
982fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<Object>(res), object);
983fc223305Sopenharmony_ci    PreferencesHelper::DeletePreferences("/data/test/test1");
984fc223305Sopenharmony_ci}
985fc223305Sopenharmony_ci
986fc223305Sopenharmony_ci/**
987fc223305Sopenharmony_ci * @tc.name: NativePreferencesTest_032
988fc223305Sopenharmony_ci * @tc.desc: normal testcase of OnChange DataChange
989fc223305Sopenharmony_ci * @tc.type: FUNC
990fc223305Sopenharmony_ci * @tc.require: Na
991fc223305Sopenharmony_ci * @tc.author: lirui
992fc223305Sopenharmony_ci */
993fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, NativePreferencesTest_032, TestSize.Level1)
994fc223305Sopenharmony_ci{
995fc223305Sopenharmony_ci    std::shared_ptr<PreferencesObserver> counter = std::make_shared<PreferencesObserverCounter>();
996fc223305Sopenharmony_ci    std::vector<std::string> keys = { KEY_TEST_STRING_ELEMENT };
997fc223305Sopenharmony_ci    pref->RegisterDataObserver(counter, keys);
998fc223305Sopenharmony_ci    pref->PutString(KEY_TEST_STRING_ELEMENT, "test");
999fc223305Sopenharmony_ci    pref->FlushSync();
1000fc223305Sopenharmony_ci    EXPECT_EQ(static_cast<PreferencesObserverCounter *>(counter.get())->notifyTimes, 1);
1001fc223305Sopenharmony_ci}
1002fc223305Sopenharmony_ci
1003fc223305Sopenharmony_ci/**
1004fc223305Sopenharmony_ci * @tc.name: OperatorTest_001
1005fc223305Sopenharmony_ci * @tc.desc: normal testcase of PreferencesValue Operator
1006fc223305Sopenharmony_ci * @tc.type: FUNC
1007fc223305Sopenharmony_ci * @tc.require: AR000CU2BN
1008fc223305Sopenharmony_ci * @tc.author: xiuhongju
1009fc223305Sopenharmony_ci */
1010fc223305Sopenharmony_ciHWTEST_F(PreferencesTest, PreferencesValueTest_001, TestSize.Level1)
1011fc223305Sopenharmony_ci{
1012fc223305Sopenharmony_ci    int valueInt = 1;
1013fc223305Sopenharmony_ci    int retInt = PreferencesValue(valueInt);
1014fc223305Sopenharmony_ci    EXPECT_EQ(valueInt, retInt);
1015fc223305Sopenharmony_ci
1016fc223305Sopenharmony_ci    int64_t valueInt64 = 1;
1017fc223305Sopenharmony_ci    int64_t retInt64 = PreferencesValue(valueInt64);
1018fc223305Sopenharmony_ci    EXPECT_EQ(valueInt64, retInt64);
1019fc223305Sopenharmony_ci
1020fc223305Sopenharmony_ci    float valueFloat = 1.0;
1021fc223305Sopenharmony_ci    float retFloat = PreferencesValue(valueFloat);
1022fc223305Sopenharmony_ci    EXPECT_EQ(valueFloat, retFloat);
1023fc223305Sopenharmony_ci
1024fc223305Sopenharmony_ci    double valueDouble = 1.0;
1025fc223305Sopenharmony_ci    double retDouble = PreferencesValue(valueDouble);
1026fc223305Sopenharmony_ci    EXPECT_EQ(valueDouble, retDouble);
1027fc223305Sopenharmony_ci
1028fc223305Sopenharmony_ci    bool valueBool = true;
1029fc223305Sopenharmony_ci    bool retBool = PreferencesValue(valueBool);
1030fc223305Sopenharmony_ci    EXPECT_EQ(valueBool, retBool);
1031fc223305Sopenharmony_ci
1032fc223305Sopenharmony_ci    string valueString = "test";
1033fc223305Sopenharmony_ci    string retString = PreferencesValue(valueString);
1034fc223305Sopenharmony_ci    EXPECT_EQ(valueString, retString);
1035fc223305Sopenharmony_ci
1036fc223305Sopenharmony_ci    std::vector<bool> valueVectorBool(2, true);
1037fc223305Sopenharmony_ci    std::vector<bool> retVectorBool = PreferencesValue(valueVectorBool);
1038fc223305Sopenharmony_ci    EXPECT_EQ(valueVectorBool, retVectorBool);
1039fc223305Sopenharmony_ci
1040fc223305Sopenharmony_ci    std::vector<double> valueVectorDouble(2, 1.0);
1041fc223305Sopenharmony_ci    std::vector<double> retVectorDouble = PreferencesValue(valueVectorDouble);
1042fc223305Sopenharmony_ci    EXPECT_EQ(valueVectorDouble, retVectorDouble);
1043fc223305Sopenharmony_ci
1044fc223305Sopenharmony_ci    std::vector<string> valueVectorString(2, "test");
1045fc223305Sopenharmony_ci    std::vector<string> retVectorString = PreferencesValue(valueVectorString);
1046fc223305Sopenharmony_ci    EXPECT_EQ(valueVectorString, retVectorString);
1047fc223305Sopenharmony_ci
1048fc223305Sopenharmony_ci    std::vector<uint8_t> valueVectorUint8(3, 1);
1049fc223305Sopenharmony_ci    std::vector<uint8_t> retVectorUint8 = PreferencesValue(valueVectorUint8);
1050fc223305Sopenharmony_ci    EXPECT_EQ(valueVectorUint8, retVectorUint8);
1051fc223305Sopenharmony_ci
1052fc223305Sopenharmony_ci    Object object("{\"key1\":\"value1\",\"key2\":222}");
1053fc223305Sopenharmony_ci    Object retObjecte = PreferencesValue(object);
1054fc223305Sopenharmony_ci    EXPECT_EQ(object, retObjecte);
1055fc223305Sopenharmony_ci
1056fc223305Sopenharmony_ci    std::vector<uint64_t> words = { 1, 2, 3 };
1057fc223305Sopenharmony_ci    BigInt bigint(words, 0);
1058fc223305Sopenharmony_ci    BigInt retBigint = PreferencesValue(bigint);
1059fc223305Sopenharmony_ci    EXPECT_EQ(bigint, retBigint);
1060fc223305Sopenharmony_ci}
1061fc223305Sopenharmony_ci} // namespace
1062