diff --git a/interfaces/inner_api/test/unittest/bundle_info_test/bundle_info_test.cpp b/interfaces/inner_api/test/unittest/bundle_info_test/bundle_info_test.cpp index afd976b8a694cc201364d5c3b8f4a3120cc88f42..3370f0e9477368bf2d5b1d8b72239c1d2f00e0f8 100644 --- a/interfaces/inner_api/test/unittest/bundle_info_test/bundle_info_test.cpp +++ b/interfaces/inner_api/test/unittest/bundle_info_test/bundle_info_test.cpp @@ -21,6 +21,7 @@ #include "parcel_macro.h" #include "string_ex.h" #include +#include using namespace testing::ext; @@ -62,5 +63,190 @@ HWTEST_F(BundleInfoTest, Bundle_Info_Test_0100, Function | SmallTest | Level0) auto ret = SimpleAppInfo::Unmarshalling(parcel); EXPECT_NE(ret, nullptr); } + +/** + * @tc.number: Json_Util_Test_0100 + * @tc.name: Json_Util_Test_0100 + * @tc.desc: test GetMapValueIfFindKey + */ +HWTEST_F(BundleInfoTest, Json_Util_Test_0100, Function | SmallTest | Level0) +{ + const nlohmann::json JSON_DATA_STR = R"( + { + "parameters": { + "shortCutKey": "CompanyPage", + "flag": "3", + "uri": "file://com.test.abc/data/test.pdf" + } + } + )"_json; + + const auto &jsonObjectEnd = JSON_DATA_STR.end(); + std::map parameters; + int32_t parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_STR, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::NUMBER); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_STR, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::STRING); + EXPECT_EQ(parseResult, ERR_OK); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_STR, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::BOOLEAN); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR; + GetMapValueIfFindKey>(JSON_DATA_STR, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::STRING); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_STR, jsonObjectEnd, + "notfound", parameters, true, parseResult, JsonType::STRING); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_MISSING_PROP); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_STR, jsonObjectEnd, + "notfound", parameters, false, parseResult, JsonType::STRING); + EXPECT_EQ(parseResult, ERR_OK); +} + +/** + * @tc.number: Json_Util_Test_0200 + * @tc.name: Json_Util_Test_0200 + * @tc.desc: test GetMapValueIfFindKey + */ +HWTEST_F(BundleInfoTest, Json_Util_Test_0200, Function | SmallTest | Level0) +{ + const nlohmann::json JSON_DATA_INT = R"( + { + "parameters": { + "shortCutKey": 1, + "flag": 2, + "uri": 3 + } + } + )"_json; + + const auto &jsonObjectEnd = JSON_DATA_INT.end(); + std::map parameters; + int32_t parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_INT, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::NUMBER); + EXPECT_EQ(parseResult, ERR_OK); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_INT, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::STRING); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_INT, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::BOOLEAN); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR; + GetMapValueIfFindKey>(JSON_DATA_INT, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::NUMBER); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_INT, jsonObjectEnd, + "notfound", parameters, true, parseResult, JsonType::NUMBER); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_MISSING_PROP); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_INT, jsonObjectEnd, + "notfound", parameters, false, parseResult, JsonType::NUMBER); + EXPECT_EQ(parseResult, ERR_OK); +} + +/** + * @tc.number: Json_Util_Test_0300 + * @tc.name: Json_Util_Test_0300 + * @tc.desc: test GetMapValueIfFindKey + */ +HWTEST_F(BundleInfoTest, Json_Util_Test_0300, Function | SmallTest | Level0) +{ + const nlohmann::json JSON_DATA_BOOL = R"( + { + "parameters": { + "shortCutKey": true, + "flag": false, + "uri": true + } + } + )"_json; + + const auto &jsonObjectEnd = JSON_DATA_BOOL.end(); + std::map parameters; + int32_t parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_BOOL, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::NUMBER); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_BOOL, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::STRING); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_BOOL, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::BOOLEAN); + EXPECT_EQ(parseResult, ERR_OK); + + parseResult = ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR; + GetMapValueIfFindKey>(JSON_DATA_BOOL, jsonObjectEnd, + "parameters", parameters, false, parseResult, JsonType::BOOLEAN); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_BOOL, jsonObjectEnd, + "notfound", parameters, true, parseResult, JsonType::BOOLEAN); + EXPECT_EQ(parseResult, ERR_APPEXECFWK_PARSE_PROFILE_MISSING_PROP); + + parseResult = ERR_OK; + GetMapValueIfFindKey>(JSON_DATA_BOOL, jsonObjectEnd, + "notfound", parameters, false, parseResult, JsonType::BOOLEAN); + EXPECT_EQ(parseResult, ERR_OK); +} + +/** + * @tc.number: Json_Util_Test_0400 + * @tc.name: Json_Util_Test_0400 + * @tc.desc: test CheckMapValueType + */ +HWTEST_F(BundleInfoTest, Json_Util_Test_0400, Function | SmallTest | Level0) +{ + const nlohmann::json JSON_DATA = R"( + { + "boolValue": true, + "boolValueF": false, + "numberValue": 1, + "stringValue": "test" + } + )"_json; + EXPECT_TRUE(BMSJsonUtil::CheckMapValueType(JsonType::BOOLEAN, JSON_DATA.at("boolValue"))); + EXPECT_TRUE(BMSJsonUtil::CheckMapValueType(JsonType::BOOLEAN, JSON_DATA.at("boolValueF"))); + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::BOOLEAN, JSON_DATA.at("numberValue"))); + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::BOOLEAN, JSON_DATA.at("stringValue"))); + + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::NUMBER, JSON_DATA.at("boolValue"))); + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::NUMBER, JSON_DATA.at("boolValueF"))); + EXPECT_TRUE(BMSJsonUtil::CheckMapValueType(JsonType::NUMBER, JSON_DATA.at("numberValue"))); + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::NUMBER, JSON_DATA.at("stringValue"))); + + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::STRING, JSON_DATA.at("boolValue"))); + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::STRING, JSON_DATA.at("boolValueF"))); + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::STRING, JSON_DATA.at("numberValue"))); + EXPECT_TRUE(BMSJsonUtil::CheckMapValueType(JsonType::STRING, JSON_DATA.at("stringValue"))); + + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::ARRAY, JSON_DATA.at("boolValue"))); + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::NULLABLE, JSON_DATA.at("boolValueF"))); + EXPECT_FALSE(BMSJsonUtil::CheckMapValueType(JsonType::OBJECT, JSON_DATA.at("numberValue"))); +} } // AppExecFwk } // OHOS