1fc223305Sopenharmony_ci/* 2fc223305Sopenharmony_ci * Copyright (c) 2024 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#include <cctype> 16fc223305Sopenharmony_ci#include <condition_variable> 17fc223305Sopenharmony_ci#include <cstdint> 18fc223305Sopenharmony_ci#include <fcntl.h> 19fc223305Sopenharmony_ci#include <filesystem> 20fc223305Sopenharmony_ci#include <functional> 21fc223305Sopenharmony_ci#include <gtest/gtest.h> 22fc223305Sopenharmony_ci#include <iostream> 23fc223305Sopenharmony_ci#include <list> 24fc223305Sopenharmony_ci#include <map> 25fc223305Sopenharmony_ci#include <memory> 26fc223305Sopenharmony_ci#include <mutex> 27fc223305Sopenharmony_ci#include <string> 28fc223305Sopenharmony_ci#include <sys/mman.h> 29fc223305Sopenharmony_ci#include <thread> 30fc223305Sopenharmony_ci#include <vector> 31fc223305Sopenharmony_ci 32fc223305Sopenharmony_ci#include "log_print.h" 33fc223305Sopenharmony_ci#include "preferences_test_utils.h" 34fc223305Sopenharmony_ci#include "oh_preferences_impl.h" 35fc223305Sopenharmony_ci#include "oh_preferences.h" 36fc223305Sopenharmony_ci#include "oh_preferences_err_code.h" 37fc223305Sopenharmony_ci#include "oh_preferences_value.h" 38fc223305Sopenharmony_ci#include "oh_preferences_option.h" 39fc223305Sopenharmony_ci#include "preferences_helper.h" 40fc223305Sopenharmony_ci 41fc223305Sopenharmony_ciusing namespace testing::ext; 42fc223305Sopenharmony_ci 43fc223305Sopenharmony_ciusing namespace OHOS::PreferencesNdk; 44fc223305Sopenharmony_ciusing namespace OHOS::NativePreferences; 45fc223305Sopenharmony_cinamespace { 46fc223305Sopenharmony_ciclass PreferencesNdkValueTest : public testing::Test { 47fc223305Sopenharmony_cipublic: 48fc223305Sopenharmony_ci static void SetUpTestCase(void); 49fc223305Sopenharmony_ci static void TearDownTestCase(void); 50fc223305Sopenharmony_ci void SetUp(); 51fc223305Sopenharmony_ci void TearDown(); 52fc223305Sopenharmony_ci}; 53fc223305Sopenharmony_ci 54fc223305Sopenharmony_civoid PreferencesNdkValueTest::SetUpTestCase(void) 55fc223305Sopenharmony_ci{ 56fc223305Sopenharmony_ci NdkTestUtils::CreateDirectoryRecursively("/data/test/"); 57fc223305Sopenharmony_ci} 58fc223305Sopenharmony_civoid PreferencesNdkValueTest::TearDownTestCase(void) {} 59fc223305Sopenharmony_ci 60fc223305Sopenharmony_civoid PreferencesNdkValueTest::SetUp(void) 61fc223305Sopenharmony_ci{ 62fc223305Sopenharmony_ci NdkTestUtils::CreateDirectoryRecursively("/data/test/"); 63fc223305Sopenharmony_ci} 64fc223305Sopenharmony_ci 65fc223305Sopenharmony_civoid PreferencesNdkValueTest::TearDown(void) {} 66fc223305Sopenharmony_ci 67fc223305Sopenharmony_cienum class PrefDataType { UNASSIGNED, INT, STRING, BOOL }; 68fc223305Sopenharmony_ci 69fc223305Sopenharmony_cistatic OH_PreferencesOption *GetCommonOption() 70fc223305Sopenharmony_ci{ 71fc223305Sopenharmony_ci OH_PreferencesOption *option = OH_PreferencesOption_Create(); 72fc223305Sopenharmony_ci EXPECT_EQ(OH_PreferencesOption_SetFileName(option, "valueTestDbb"), PREFERENCES_OK); 73fc223305Sopenharmony_ci EXPECT_EQ(OH_PreferencesOption_SetBundleName(option, "com.uttest"), PREFERENCES_OK); 74fc223305Sopenharmony_ci EXPECT_EQ(OH_PreferencesOption_SetDataGroupId(option, "123"), PREFERENCES_OK); 75fc223305Sopenharmony_ci return option; 76fc223305Sopenharmony_ci} 77fc223305Sopenharmony_ci 78fc223305Sopenharmony_ciint PreferencesFlush(OH_Preferences *store) 79fc223305Sopenharmony_ci{ 80fc223305Sopenharmony_ci if (store == nullptr) { 81fc223305Sopenharmony_ci printf("preferences flush failed, store is null\n"); 82fc223305Sopenharmony_ci return PREFERENCES_ERROR_BASE; 83fc223305Sopenharmony_ci } 84fc223305Sopenharmony_ci OH_PreferencesImpl *pref = static_cast<OH_PreferencesImpl *>(store); 85fc223305Sopenharmony_ci std::shared_ptr<OHOS::NativePreferences::Preferences> nativePreferences = pref->GetNativePreferences(); 86fc223305Sopenharmony_ci return nativePreferences->FlushSync(); 87fc223305Sopenharmony_ci} 88fc223305Sopenharmony_ci 89fc223305Sopenharmony_ci/** 90fc223305Sopenharmony_ci * @tc.name: NDKPreferencesTest_001 91fc223305Sopenharmony_ci * @tc.desc: test pref is nullptr 92fc223305Sopenharmony_ci * @tc.type: FUNC 93fc223305Sopenharmony_ci * @tc.require: NA 94fc223305Sopenharmony_ci * @tc.author: Lirui 95fc223305Sopenharmony_ci */ 96fc223305Sopenharmony_ciHWTEST_F(PreferencesNdkValueTest, NDKPreferencesTest_001, TestSize.Level1) 97fc223305Sopenharmony_ci{ 98fc223305Sopenharmony_ci int errCode = PREFERENCES_OK; 99fc223305Sopenharmony_ci std::string intKey = "ndktest_int_key"; 100fc223305Sopenharmony_ci int value = 0; 101fc223305Sopenharmony_ci int res = 0; 102fc223305Sopenharmony_ci errCode = OH_Preferences_SetInt(nullptr, intKey.c_str(), 123); 103fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 104fc223305Sopenharmony_ci 105fc223305Sopenharmony_ci errCode = OH_Preferences_GetInt(nullptr, intKey.c_str(), &value); 106fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 107fc223305Sopenharmony_ci 108fc223305Sopenharmony_ci OH_PreferencesOption *option = GetCommonOption(); 109fc223305Sopenharmony_ci OH_Preferences *pref = OH_Preferences_Open(option, &errCode); 110fc223305Sopenharmony_ci (void)OH_PreferencesOption_Destroy(option); 111fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 112fc223305Sopenharmony_ci 113fc223305Sopenharmony_ci errCode = OH_Preferences_SetInt(pref, "", value); 114fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 115fc223305Sopenharmony_ci errCode = OH_Preferences_GetInt(pref, "", &res); 116fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 117fc223305Sopenharmony_ci 118fc223305Sopenharmony_ci errCode = OH_Preferences_SetInt(pref, nullptr, value); 119fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 120fc223305Sopenharmony_ci errCode = OH_Preferences_GetInt(pref, nullptr, &res); 121fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 122fc223305Sopenharmony_ci EXPECT_EQ(res, value); 123fc223305Sopenharmony_ci 124fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_Close(pref), PREFERENCES_OK); 125fc223305Sopenharmony_ci EXPECT_EQ(OHOS::NativePreferences::PreferencesHelper::DeletePreferences("/data/test/valueTestDb"), 126fc223305Sopenharmony_ci OHOS::NativePreferences::E_OK); 127fc223305Sopenharmony_ci} 128fc223305Sopenharmony_ci 129fc223305Sopenharmony_ci/** 130fc223305Sopenharmony_ci * @tc.name: NDKPreferencesTest_002 131fc223305Sopenharmony_ci * @tc.desc: test pref is nullptr 132fc223305Sopenharmony_ci * @tc.type: FUNC 133fc223305Sopenharmony_ci * @tc.require: NA 134fc223305Sopenharmony_ci * @tc.author: Lirui 135fc223305Sopenharmony_ci */ 136fc223305Sopenharmony_ciHWTEST_F(PreferencesNdkValueTest, NDKPreferencesTest_002, TestSize.Level1) 137fc223305Sopenharmony_ci{ 138fc223305Sopenharmony_ci int errCode = PREFERENCES_OK; 139fc223305Sopenharmony_ci std::string stringKey = "ndktest_int_key"; 140fc223305Sopenharmony_ci uint32_t len = 0; 141fc223305Sopenharmony_ci char *res = nullptr; 142fc223305Sopenharmony_ci char *resValue = nullptr; 143fc223305Sopenharmony_ci errCode = OH_Preferences_SetString(nullptr, stringKey.c_str(), "test"); 144fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 145fc223305Sopenharmony_ci 146fc223305Sopenharmony_ci errCode = OH_Preferences_GetString(nullptr, stringKey.c_str(), &res, &len); 147fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 148fc223305Sopenharmony_ci 149fc223305Sopenharmony_ci OH_PreferencesOption *option = GetCommonOption(); 150fc223305Sopenharmony_ci OH_Preferences *pref = OH_Preferences_Open(option, &errCode); 151fc223305Sopenharmony_ci 152fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 153fc223305Sopenharmony_ci 154fc223305Sopenharmony_ci errCode = OH_Preferences_SetString(pref, "", "test"); 155fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 156fc223305Sopenharmony_ci errCode = OH_Preferences_GetString(pref, "", &res, &len); 157fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 158fc223305Sopenharmony_ci 159fc223305Sopenharmony_ci errCode = OH_Preferences_SetString(pref, nullptr, "test"); 160fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 161fc223305Sopenharmony_ci errCode = OH_Preferences_GetString(pref, nullptr, &res, &len); 162fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 163fc223305Sopenharmony_ci 164fc223305Sopenharmony_ci errCode = OH_Preferences_SetString(pref, stringKey.c_str(), "123 test"); 165fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 166fc223305Sopenharmony_ci errCode = OH_Preferences_GetString(pref, stringKey.c_str(), &resValue, &len); 167fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 168fc223305Sopenharmony_ci EXPECT_EQ(strcmp(resValue, "123 test"), 0); 169fc223305Sopenharmony_ci EXPECT_EQ(PreferencesFlush(pref), PREFERENCES_OK); 170fc223305Sopenharmony_ci OH_Preferences_FreeString(resValue); 171fc223305Sopenharmony_ci 172fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_Close(pref), PREFERENCES_OK); 173fc223305Sopenharmony_ci pref = OH_Preferences_Open(option, &errCode); 174fc223305Sopenharmony_ci errCode = OH_Preferences_GetString(pref, stringKey.c_str(), &resValue, &len); 175fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 176fc223305Sopenharmony_ci EXPECT_EQ(strcmp(resValue, "123 test"), 0); 177fc223305Sopenharmony_ci (void)OH_PreferencesOption_Destroy(option); 178fc223305Sopenharmony_ci EXPECT_EQ(OHOS::NativePreferences::PreferencesHelper::DeletePreferences("/data/test/valueTestDb"), 179fc223305Sopenharmony_ci OHOS::NativePreferences::E_OK); 180fc223305Sopenharmony_ci} 181fc223305Sopenharmony_ci 182fc223305Sopenharmony_ci/** 183fc223305Sopenharmony_ci * @tc.name: NDKPreferencesTest_003 184fc223305Sopenharmony_ci * @tc.desc: test pref is nullptr 185fc223305Sopenharmony_ci * @tc.type: FUNC 186fc223305Sopenharmony_ci * @tc.require: NA 187fc223305Sopenharmony_ci * @tc.author: Lirui 188fc223305Sopenharmony_ci */ 189fc223305Sopenharmony_ciHWTEST_F(PreferencesNdkValueTest, NDKPreferencesTest_003, TestSize.Level1) 190fc223305Sopenharmony_ci{ 191fc223305Sopenharmony_ci int errCode = PREFERENCES_OK; 192fc223305Sopenharmony_ci std::string boolKey = "ndktest_int_key"; 193fc223305Sopenharmony_ci bool boolValue = false; 194fc223305Sopenharmony_ci errCode = OH_Preferences_SetBool(nullptr, boolKey.c_str(), true); 195fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 196fc223305Sopenharmony_ci 197fc223305Sopenharmony_ci errCode = OH_Preferences_GetBool(nullptr, boolKey.c_str(), &boolValue); 198fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 199fc223305Sopenharmony_ci 200fc223305Sopenharmony_ci OH_PreferencesOption *option = GetCommonOption(); 201fc223305Sopenharmony_ci OH_Preferences *pref = OH_Preferences_Open(option, &errCode); 202fc223305Sopenharmony_ci (void)OH_PreferencesOption_Destroy(option); 203fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 204fc223305Sopenharmony_ci 205fc223305Sopenharmony_ci errCode = OH_Preferences_SetBool(pref, "", false); 206fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 207fc223305Sopenharmony_ci errCode = OH_Preferences_GetBool(pref, "", &boolValue); 208fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 209fc223305Sopenharmony_ci 210fc223305Sopenharmony_ci errCode = OH_Preferences_SetBool(pref, nullptr, false); 211fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 212fc223305Sopenharmony_ci errCode = OH_Preferences_GetBool(pref, nullptr, &boolValue); 213fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 214fc223305Sopenharmony_ci 215fc223305Sopenharmony_ci errCode = OH_Preferences_SetBool(pref, " ", true); 216fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_OK); 217fc223305Sopenharmony_ci errCode = OH_Preferences_GetBool(pref, " ", &boolValue); 218fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_OK); 219fc223305Sopenharmony_ci ASSERT_EQ(boolValue, true); 220fc223305Sopenharmony_ci 221fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_Close(pref), PREFERENCES_OK); 222fc223305Sopenharmony_ci EXPECT_EQ(OHOS::NativePreferences::PreferencesHelper::DeletePreferences("/data/test/valueTestDb"), 223fc223305Sopenharmony_ci OHOS::NativePreferences::E_OK); 224fc223305Sopenharmony_ci} 225fc223305Sopenharmony_ci 226fc223305Sopenharmony_ci/** 227fc223305Sopenharmony_ci * @tc.name: NDKPreferencesTest_004 228fc223305Sopenharmony_ci * @tc.desc: test pref is nullptr 229fc223305Sopenharmony_ci * @tc.type: FUNC 230fc223305Sopenharmony_ci * @tc.require: NA 231fc223305Sopenharmony_ci * @tc.author: Lirui 232fc223305Sopenharmony_ci */ 233fc223305Sopenharmony_ciHWTEST_F(PreferencesNdkValueTest, NDKPreferencesTest_004, TestSize.Level1) 234fc223305Sopenharmony_ci{ 235fc223305Sopenharmony_ci int errCode = PREFERENCES_OK; 236fc223305Sopenharmony_ci std::string boolKey = "ndktest_int_key"; 237fc223305Sopenharmony_ci errCode = OH_Preferences_Delete(nullptr, boolKey.c_str()); 238fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 239fc223305Sopenharmony_ci 240fc223305Sopenharmony_ci OH_PreferencesOption *option = GetCommonOption(); 241fc223305Sopenharmony_ci OH_Preferences *pref = OH_Preferences_Open(option, &errCode); 242fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 243fc223305Sopenharmony_ci 244fc223305Sopenharmony_ci errCode = OH_Preferences_Delete(pref, ""); 245fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 246fc223305Sopenharmony_ci errCode = OH_Preferences_Delete(pref, nullptr); 247fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 248fc223305Sopenharmony_ci 249fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_Close(pref), PREFERENCES_OK); 250fc223305Sopenharmony_ci 251fc223305Sopenharmony_ci errCode = OH_Preferences_SetBool(pref, boolKey.c_str(), false); 252fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 253fc223305Sopenharmony_ci bool res; 254fc223305Sopenharmony_ci errCode = OH_Preferences_GetBool(pref, boolKey.c_str(), &res); 255fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 256fc223305Sopenharmony_ci EXPECT_EQ(res, false); 257fc223305Sopenharmony_ci (void)OH_PreferencesOption_Destroy(option); 258fc223305Sopenharmony_ci 259fc223305Sopenharmony_ci EXPECT_EQ(OHOS::NativePreferences::PreferencesHelper::DeletePreferences("/data/test/valueTestDb"), 260fc223305Sopenharmony_ci OHOS::NativePreferences::E_OK); 261fc223305Sopenharmony_ci} 262fc223305Sopenharmony_ci 263fc223305Sopenharmony_ci/** 264fc223305Sopenharmony_ci * @tc.name: NDKPreferencesTest_005 265fc223305Sopenharmony_ci * @tc.desc: test key and value 266fc223305Sopenharmony_ci * @tc.type: FUNC 267fc223305Sopenharmony_ci * @tc.require: NA 268fc223305Sopenharmony_ci * @tc.author: Lirui 269fc223305Sopenharmony_ci */ 270fc223305Sopenharmony_ciHWTEST_F(PreferencesNdkValueTest, NDKPreferencesTest_005, TestSize.Level1) 271fc223305Sopenharmony_ci{ 272fc223305Sopenharmony_ci int errCode = PREFERENCES_OK; 273fc223305Sopenharmony_ci std::string boolKey = "ndktest_int_key"; 274fc223305Sopenharmony_ci errCode = OH_Preferences_Delete(nullptr, boolKey.c_str()); 275fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 276fc223305Sopenharmony_ci 277fc223305Sopenharmony_ci OH_PreferencesOption *option = GetCommonOption(); 278fc223305Sopenharmony_ci OH_Preferences *pref = OH_Preferences_Open(option, &errCode); 279fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 280fc223305Sopenharmony_ci (void)OH_PreferencesOption_Destroy(option); 281fc223305Sopenharmony_ci 282fc223305Sopenharmony_ci std::string stringKey(1024, 'a'); 283fc223305Sopenharmony_ci errCode = OH_Preferences_SetString(pref, stringKey.c_str(), "test"); 284fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_OK); 285fc223305Sopenharmony_ci errCode = OH_Preferences_SetString(pref, stringKey.append("a").c_str(), "test"); 286fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 287fc223305Sopenharmony_ci std::string stringValue(16 * 1024 * 1024, 'a'); 288fc223305Sopenharmony_ci errCode = OH_Preferences_SetString(pref, "test", stringValue.c_str()); 289fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_OK); 290fc223305Sopenharmony_ci errCode = OH_Preferences_SetString(pref, "test", stringValue.append("a").c_str()); 291fc223305Sopenharmony_ci EXPECT_EQ(errCode, PREFERENCES_ERROR_INVALID_PARAM); 292fc223305Sopenharmony_ci 293fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_Close(pref), PREFERENCES_OK); 294fc223305Sopenharmony_ci EXPECT_EQ(OHOS::NativePreferences::PreferencesHelper::DeletePreferences("/data/test/valueTestDb"), 295fc223305Sopenharmony_ci OHOS::NativePreferences::E_OK); 296fc223305Sopenharmony_ci} 297fc223305Sopenharmony_ci 298fc223305Sopenharmony_ci/** 299fc223305Sopenharmony_ci * @tc.name: NDKPreferencesTestEmptyValueTest001 300fc223305Sopenharmony_ci * @tc.desc: test key and value 301fc223305Sopenharmony_ci * @tc.type: FUNC 302fc223305Sopenharmony_ci * @tc.require: NA 303fc223305Sopenharmony_ci * @tc.author: Lirui 304fc223305Sopenharmony_ci */ 305fc223305Sopenharmony_ciHWTEST_F(PreferencesNdkValueTest, NDKPreferencesTestEmptyValueTest001, TestSize.Level1) 306fc223305Sopenharmony_ci{ 307fc223305Sopenharmony_ci int errCode = PREFERENCES_OK; 308fc223305Sopenharmony_ci OH_PreferencesOption *option = GetCommonOption(); 309fc223305Sopenharmony_ci OH_Preferences *pref = OH_Preferences_Open(option, &errCode); 310fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 311fc223305Sopenharmony_ci (void)OH_PreferencesOption_Destroy(option); 312fc223305Sopenharmony_ci 313fc223305Sopenharmony_ci uint32_t len = 0; 314fc223305Sopenharmony_ci char *valueGet = nullptr; 315fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_SetString(pref, "abc", ""), PREFERENCES_OK); 316fc223305Sopenharmony_ci errCode = OH_Preferences_GetString(pref, "abc", &valueGet, &len); 317fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 318fc223305Sopenharmony_ci EXPECT_EQ(strcmp(valueGet, ""), 0); 319fc223305Sopenharmony_ci EXPECT_EQ(len, 1); 320fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_Close(pref), PREFERENCES_OK); 321fc223305Sopenharmony_ci EXPECT_EQ(OHOS::NativePreferences::PreferencesHelper::DeletePreferences("/data/test/valueTestDb"), 322fc223305Sopenharmony_ci OHOS::NativePreferences::E_OK); 323fc223305Sopenharmony_ci} 324fc223305Sopenharmony_ci 325fc223305Sopenharmony_ci/** 326fc223305Sopenharmony_ci * @tc.name: NDKPreferencesTestEmptyValueTest001 327fc223305Sopenharmony_ci * @tc.desc: test key and value 328fc223305Sopenharmony_ci * @tc.type: FUNC 329fc223305Sopenharmony_ci * @tc.require: NA 330fc223305Sopenharmony_ci * @tc.author: bluhuang 331fc223305Sopenharmony_ci */ 332fc223305Sopenharmony_ciHWTEST_F(PreferencesNdkValueTest, NDKPreferencesTestTypeTest001, TestSize.Level1) 333fc223305Sopenharmony_ci{ 334fc223305Sopenharmony_ci int errCode = PREFERENCES_OK; 335fc223305Sopenharmony_ci OH_PreferencesOption *option = GetCommonOption(); 336fc223305Sopenharmony_ci OH_Preferences *pref = OH_Preferences_Open(option, &errCode); 337fc223305Sopenharmony_ci ASSERT_EQ(errCode, PREFERENCES_OK); 338fc223305Sopenharmony_ci (void)OH_PreferencesOption_Destroy(option); 339fc223305Sopenharmony_ci 340fc223305Sopenharmony_ci std::string key = "testKey"; 341fc223305Sopenharmony_ci uint32_t len = 0; 342fc223305Sopenharmony_ci char *strValue = nullptr; 343fc223305Sopenharmony_ci bool boolValue = false; 344fc223305Sopenharmony_ci int intValue = -1; 345fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_SetInt(pref, key.c_str(), 123), PREFERENCES_OK); 346fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetString(pref, key.c_str(), &strValue, &len), PREFERENCES_ERROR_KEY_NOT_FOUND); 347fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetBool(pref, key.c_str(), &boolValue), PREFERENCES_ERROR_KEY_NOT_FOUND); 348fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetInt(pref, key.c_str(), &intValue), PREFERENCES_OK); 349fc223305Sopenharmony_ci 350fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_SetBool(pref, key.c_str(), true), PREFERENCES_OK); 351fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetInt(pref, key.c_str(), &intValue), PREFERENCES_ERROR_KEY_NOT_FOUND); 352fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetString(pref, key.c_str(), &strValue, &len), PREFERENCES_ERROR_KEY_NOT_FOUND); 353fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetBool(pref, key.c_str(), &boolValue), PREFERENCES_OK); 354fc223305Sopenharmony_ci 355fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_SetString(pref, key.c_str(), ""), PREFERENCES_OK); 356fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetBool(pref, key.c_str(), &boolValue), PREFERENCES_ERROR_KEY_NOT_FOUND); 357fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetInt(pref, key.c_str(), &intValue), PREFERENCES_ERROR_KEY_NOT_FOUND); 358fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_GetString(pref, key.c_str(), &strValue, &len), PREFERENCES_OK); 359fc223305Sopenharmony_ci 360fc223305Sopenharmony_ci EXPECT_EQ(OH_Preferences_Close(pref), PREFERENCES_OK); 361fc223305Sopenharmony_ci EXPECT_EQ(OHOS::NativePreferences::PreferencesHelper::DeletePreferences("/data/test/valueTestDb"), 362fc223305Sopenharmony_ci OHOS::NativePreferences::E_OK); 363fc223305Sopenharmony_ci} 364fc223305Sopenharmony_ci} 365