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