14d949f91Sopenharmony_ci/*
24d949f91Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
34d949f91Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44d949f91Sopenharmony_ci * you may not use this file except in compliance with the License.
54d949f91Sopenharmony_ci * You may obtain a copy of the License at
64d949f91Sopenharmony_ci *
74d949f91Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84d949f91Sopenharmony_ci *
94d949f91Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104d949f91Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114d949f91Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124d949f91Sopenharmony_ci * See the License for the specific language governing permissions and
134d949f91Sopenharmony_ci * limitations under the License.
144d949f91Sopenharmony_ci */
154d949f91Sopenharmony_ci
164d949f91Sopenharmony_ci#include "gtest/gtest.h"
174d949f91Sopenharmony_ci
184d949f91Sopenharmony_ci#include "effect_json_helper.h"
194d949f91Sopenharmony_ci
204d949f91Sopenharmony_ciusing namespace testing::ext;
214d949f91Sopenharmony_ciusing namespace OHOS::Media::Effect;
224d949f91Sopenharmony_ci
234d949f91Sopenharmony_cinamespace OHOS {
244d949f91Sopenharmony_cinamespace Media {
254d949f91Sopenharmony_cinamespace Effect {
264d949f91Sopenharmony_cinamespace Test {
274d949f91Sopenharmony_cinamespace {
284d949f91Sopenharmony_ci    constexpr char const *IMAGE_EFFECT = "imageEffect";
294d949f91Sopenharmony_ci    constexpr char const *FILTERS = "filters";
304d949f91Sopenharmony_ci    constexpr char const *NAME = "name";
314d949f91Sopenharmony_ci    constexpr char const *BRIGHTNESS = "Brightness";
324d949f91Sopenharmony_ci    constexpr char const *VALUES = "values";
334d949f91Sopenharmony_ci    constexpr char const *FILTER_INTENSITY = "FilterIntensity";
344d949f91Sopenharmony_ci    constexpr char const *CONTRAST = "Contrast";
354d949f91Sopenharmony_ci    constexpr char const *IMAGE_EDIT = "imageEdit";
364d949f91Sopenharmony_ci    constexpr char const *FLOAT_TEST = "FloatTest";
374d949f91Sopenharmony_ci    constexpr char const *INT_TEST = "IntTest";
384d949f91Sopenharmony_ci    constexpr char const *UINT_TEST = "UintTest";
394d949f91Sopenharmony_ci    constexpr char const *DOUBLE_TEST = "DoubleTest";
404d949f91Sopenharmony_ci    constexpr char const *BOOL_TEST = "BoolTest";
414d949f91Sopenharmony_ci    constexpr char const *STRING_TEST = "StringTest";
424d949f91Sopenharmony_ci    constexpr char const *TEST_STR = "testStr";
434d949f91Sopenharmony_ci} // namespace
444d949f91Sopenharmony_ci
454d949f91Sopenharmony_ciclass TestJsonHelper : public testing::Test {
464d949f91Sopenharmony_cipublic:
474d949f91Sopenharmony_ci    TestJsonHelper() = default;
484d949f91Sopenharmony_ci
494d949f91Sopenharmony_ci    ~TestJsonHelper() override = default;
504d949f91Sopenharmony_ci
514d949f91Sopenharmony_ci    static void SetUpTestCase() {}
524d949f91Sopenharmony_ci
534d949f91Sopenharmony_ci    static void TearDownTestCase() {}
544d949f91Sopenharmony_ci
554d949f91Sopenharmony_ci    void SetUp() override
564d949f91Sopenharmony_ci    {
574d949f91Sopenharmony_ci        root_ = EFFECTJsonHelper::CreateObject();
584d949f91Sopenharmony_ci    }
594d949f91Sopenharmony_ci
604d949f91Sopenharmony_ci    void TearDown() override
614d949f91Sopenharmony_ci    {
624d949f91Sopenharmony_ci        root_ = nullptr;
634d949f91Sopenharmony_ci    }
644d949f91Sopenharmony_ci
654d949f91Sopenharmony_ci    EffectJsonPtr root_;
664d949f91Sopenharmony_ci};
674d949f91Sopenharmony_ci
684d949f91Sopenharmony_ciHWTEST_F(TestJsonHelper, Parse001, TestSize.Level0)
694d949f91Sopenharmony_ci{
704d949f91Sopenharmony_ci    std::string info = "{\"imageEffect\":{\"filters\":[{\"name\":\"Brightness\",\"values\":{\"FilterIntensity\":"
714d949f91Sopenharmony_ci        "100.0}},{\"name\":\"Contrast\",\"values\":{\"FilterIntensity\":50.0}}],\"name\":\"imageEdit\"}}";
724d949f91Sopenharmony_ci
734d949f91Sopenharmony_ci    EffectJsonPtr root = EFFECTJsonHelper::ParseJsonData(info);
744d949f91Sopenharmony_ci    ASSERT_NE(root, nullptr);
754d949f91Sopenharmony_ci    ASSERT_TRUE(root->HasElement(IMAGE_EFFECT));
764d949f91Sopenharmony_ci
774d949f91Sopenharmony_ci    EffectJsonPtr imageEffect = root->GetElement(IMAGE_EFFECT);
784d949f91Sopenharmony_ci    ASSERT_NE(imageEffect, nullptr);
794d949f91Sopenharmony_ci    ASSERT_TRUE(imageEffect->HasElement(FILTERS));
804d949f91Sopenharmony_ci    ASSERT_TRUE(imageEffect->HasElement(NAME));
814d949f91Sopenharmony_ci
824d949f91Sopenharmony_ci    EffectJsonPtr filterObject = imageEffect->GetElement(FILTERS);
834d949f91Sopenharmony_ci    ASSERT_NE(filterObject, nullptr);
844d949f91Sopenharmony_ci    ASSERT_TRUE(filterObject->IsArray());
854d949f91Sopenharmony_ci    std::vector<EffectJsonPtr> filters = filterObject->GetArray();
864d949f91Sopenharmony_ci    ASSERT_EQ(filters.size(), 2);
874d949f91Sopenharmony_ci
884d949f91Sopenharmony_ci    filters = imageEffect->GetArray(FILTERS);
894d949f91Sopenharmony_ci    ASSERT_EQ(filters.size(), 2);
904d949f91Sopenharmony_ci
914d949f91Sopenharmony_ci    ASSERT_NE(filters[0], nullptr);
924d949f91Sopenharmony_ci    ASSERT_STREQ(filters[0]->GetString(NAME).c_str(), BRIGHTNESS);
934d949f91Sopenharmony_ci    EffectJsonPtr values = filters[0]->GetElement(VALUES);
944d949f91Sopenharmony_ci    ASSERT_NE(values, nullptr);
954d949f91Sopenharmony_ci    ASSERT_EQ(values->GetFloat(FILTER_INTENSITY), 100.0f);
964d949f91Sopenharmony_ci
974d949f91Sopenharmony_ci    ASSERT_NE(filters[1], nullptr);
984d949f91Sopenharmony_ci    ASSERT_STREQ(filters[1]->GetString(NAME).c_str(), CONTRAST);
994d949f91Sopenharmony_ci    values = filters[1]->GetElement(VALUES);
1004d949f91Sopenharmony_ci    ASSERT_NE(values, nullptr);
1014d949f91Sopenharmony_ci    ASSERT_EQ(values->GetFloat(FILTER_INTENSITY), 50.0f);
1024d949f91Sopenharmony_ci
1034d949f91Sopenharmony_ci    EffectJsonPtr name = imageEffect->GetElement(NAME);
1044d949f91Sopenharmony_ci    ASSERT_NE(name, nullptr);
1054d949f91Sopenharmony_ci    ASSERT_STREQ(name->GetString().c_str(), IMAGE_EDIT);
1064d949f91Sopenharmony_ci    ASSERT_STREQ(imageEffect->GetString(NAME).c_str(), IMAGE_EDIT);
1074d949f91Sopenharmony_ci}
1084d949f91Sopenharmony_ci
1094d949f91Sopenharmony_ciHWTEST_F(TestJsonHelper, Parse002, TestSize.Level0)
1104d949f91Sopenharmony_ci{
1114d949f91Sopenharmony_ci    std::string info = "{\"imageEffect\":{\"filters\":[{\"name\":\"Brightness\",\"values\":{\"FloatTest\":"
1124d949f91Sopenharmony_ci        "100.0,\"IntTest\":-10,\"UintTest\":20,\"DoubleTest\":30.5,\"BoolTest\":true,\"StringTest\":\"testStr\"}},"
1134d949f91Sopenharmony_ci        "{\"name\":\"Contrast\",\"values\":{\"FilterIntensity\":50.0}}],\"name\":\"imageEdit\"}}";
1144d949f91Sopenharmony_ci
1154d949f91Sopenharmony_ci    EffectJsonPtr root = EFFECTJsonHelper::ParseJsonData(info);
1164d949f91Sopenharmony_ci    ASSERT_NE(root, nullptr);
1174d949f91Sopenharmony_ci    EffectJsonPtr imageEffect = root->GetElement(IMAGE_EFFECT);
1184d949f91Sopenharmony_ci    ASSERT_NE(imageEffect, nullptr);
1194d949f91Sopenharmony_ci    std::vector<EffectJsonPtr> filters = imageEffect->GetArray(FILTERS);
1204d949f91Sopenharmony_ci    ASSERT_EQ(filters.size(), 2);
1214d949f91Sopenharmony_ci    EffectJsonPtr values = filters[0]->GetElement(VALUES);
1224d949f91Sopenharmony_ci    ASSERT_NE(values, nullptr);
1234d949f91Sopenharmony_ci
1244d949f91Sopenharmony_ci    ASSERT_EQ(values->GetFloat(FLOAT_TEST), 100.0f);
1254d949f91Sopenharmony_ci    ASSERT_EQ(values->GetInt(INT_TEST), -10);
1264d949f91Sopenharmony_ci    ASSERT_EQ(values->GetUInt(UINT_TEST), 20);
1274d949f91Sopenharmony_ci    ASSERT_EQ(values->GetDouble(DOUBLE_TEST), 30.5f);
1284d949f91Sopenharmony_ci    ASSERT_EQ(values->GetBool(BOOL_TEST), true);
1294d949f91Sopenharmony_ci    ASSERT_EQ(values->GetString(STRING_TEST), TEST_STR);
1304d949f91Sopenharmony_ci
1314d949f91Sopenharmony_ci    EffectJsonPtr filtersObject = imageEffect->GetElement(FILTERS);
1324d949f91Sopenharmony_ci    ASSERT_NE(filtersObject, nullptr);
1334d949f91Sopenharmony_ci    EffectJsonPtr replaceFilters = EFFECTJsonHelper::CreateObject();
1344d949f91Sopenharmony_ci    ASSERT_TRUE(replaceFilters->Put(NAME, TEST_STR));
1354d949f91Sopenharmony_ci    ASSERT_TRUE(imageEffect->Replace(FILTERS, replaceFilters));
1364d949f91Sopenharmony_ci    ASSERT_STREQ(replaceFilters->GetString(NAME).c_str(), TEST_STR);
1374d949f91Sopenharmony_ci}
1384d949f91Sopenharmony_ci
1394d949f91Sopenharmony_ciHWTEST_F(TestJsonHelper, Create001, TestSize.Level0)
1404d949f91Sopenharmony_ci{
1414d949f91Sopenharmony_ci    // brightness
1424d949f91Sopenharmony_ci    EffectJsonPtr brightnessValue = EFFECTJsonHelper::CreateObject();
1434d949f91Sopenharmony_ci    ASSERT_NE(brightnessValue, nullptr);
1444d949f91Sopenharmony_ci    float brightnessFilterIntensity = -100.0f;
1454d949f91Sopenharmony_ci    ASSERT_TRUE(brightnessValue->Put(FILTER_INTENSITY, brightnessFilterIntensity));
1464d949f91Sopenharmony_ci
1474d949f91Sopenharmony_ci    EffectJsonPtr brightness = EFFECTJsonHelper::CreateObject();
1484d949f91Sopenharmony_ci    ASSERT_NE(brightness, nullptr);
1494d949f91Sopenharmony_ci    ASSERT_TRUE(brightness->Put(NAME, BRIGHTNESS));
1504d949f91Sopenharmony_ci    ASSERT_TRUE(brightness->Put(VALUES, brightnessValue));
1514d949f91Sopenharmony_ci
1524d949f91Sopenharmony_ci    // contrast
1534d949f91Sopenharmony_ci    EffectJsonPtr contrastValue = EFFECTJsonHelper::CreateObject();
1544d949f91Sopenharmony_ci    ASSERT_NE(contrastValue, nullptr);
1554d949f91Sopenharmony_ci    float contrastFilterIntensity = -50.0f;
1564d949f91Sopenharmony_ci    ASSERT_TRUE(contrastValue->Put(FILTER_INTENSITY, contrastFilterIntensity));
1574d949f91Sopenharmony_ci
1584d949f91Sopenharmony_ci    EffectJsonPtr contrast = EFFECTJsonHelper::CreateObject();
1594d949f91Sopenharmony_ci    ASSERT_NE(contrast, nullptr);
1604d949f91Sopenharmony_ci    ASSERT_TRUE(contrast->Put(NAME, CONTRAST));
1614d949f91Sopenharmony_ci    ASSERT_TRUE(contrast->Put(VALUES, contrastValue));
1624d949f91Sopenharmony_ci
1634d949f91Sopenharmony_ci    // array filters
1644d949f91Sopenharmony_ci    EffectJsonPtr filters = EFFECTJsonHelper::CreateArray();
1654d949f91Sopenharmony_ci    ASSERT_NE(filters, nullptr);
1664d949f91Sopenharmony_ci    ASSERT_TRUE(filters->Add(brightness));
1674d949f91Sopenharmony_ci    ASSERT_TRUE(filters->Add(contrast));
1684d949f91Sopenharmony_ci
1694d949f91Sopenharmony_ci    // imageEffect
1704d949f91Sopenharmony_ci    EffectJsonPtr imageEffect = EFFECTJsonHelper::CreateObject();
1714d949f91Sopenharmony_ci    ASSERT_NE(imageEffect, nullptr);
1724d949f91Sopenharmony_ci    ASSERT_TRUE(imageEffect->Put(FILTERS, filters));
1734d949f91Sopenharmony_ci    ASSERT_TRUE(imageEffect->Put(NAME, IMAGE_EDIT));
1744d949f91Sopenharmony_ci
1754d949f91Sopenharmony_ci    EffectJsonPtr root = EFFECTJsonHelper::CreateObject();
1764d949f91Sopenharmony_ci    ASSERT_NE(root, nullptr);
1774d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(IMAGE_EFFECT, imageEffect));
1784d949f91Sopenharmony_ci
1794d949f91Sopenharmony_ci    std::string info = "{\"imageEffect\":{\"filters\":[{\"name\":\"Brightness\",\"values\":{\"FilterIntensity\":"
1804d949f91Sopenharmony_ci        "-100}},{\"name\":\"Contrast\",\"values\":{\"FilterIntensity\":-50}}],\"name\":\"imageEdit\"}}";
1814d949f91Sopenharmony_ci    ASSERT_STREQ(root->ToString().c_str(), info.c_str());
1824d949f91Sopenharmony_ci}
1834d949f91Sopenharmony_ci
1844d949f91Sopenharmony_ciHWTEST_F(TestJsonHelper, CreateObject001, TestSize.Level0)
1854d949f91Sopenharmony_ci{
1864d949f91Sopenharmony_ci    EffectJsonPtr root = EFFECTJsonHelper::CreateObject();
1874d949f91Sopenharmony_ci    ASSERT_NE(root, nullptr);
1884d949f91Sopenharmony_ci    ASSERT_TRUE(root->IsObject());
1894d949f91Sopenharmony_ci    float floatValue = 50.0f;
1904d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(FLOAT_TEST, floatValue));
1914d949f91Sopenharmony_ci    int32_t intValue = -10;
1924d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(INT_TEST, intValue));
1934d949f91Sopenharmony_ci    uint32_t uintValue = 20;
1944d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(UINT_TEST, uintValue));
1954d949f91Sopenharmony_ci    double doubleValue = 30.5;
1964d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(DOUBLE_TEST, doubleValue));
1974d949f91Sopenharmony_ci    bool boolValue = true;
1984d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(BOOL_TEST, boolValue));
1994d949f91Sopenharmony_ci    std::string strValue = TEST_STR;
2004d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(STRING_TEST, strValue));
2014d949f91Sopenharmony_ci    ASSERT_FALSE(root->Put(STRING_TEST, (char *)nullptr));
2024d949f91Sopenharmony_ci
2034d949f91Sopenharmony_ci    std::string info = "{\"FloatTest\":50,\"IntTest\":-10,\"UintTest\":20,\"DoubleTest\":30.5,\"BoolTest\":true,"
2044d949f91Sopenharmony_ci        "\"StringTest\":\"testStr\"}";
2054d949f91Sopenharmony_ci
2064d949f91Sopenharmony_ci    ASSERT_STREQ(root->ToString().c_str(), info.c_str());
2074d949f91Sopenharmony_ci}
2084d949f91Sopenharmony_ci
2094d949f91Sopenharmony_ciHWTEST_F(TestJsonHelper, CreateArray001, TestSize.Level0)
2104d949f91Sopenharmony_ci{
2114d949f91Sopenharmony_ci    // float
2124d949f91Sopenharmony_ci    EffectJsonPtr floatRoot = EFFECTJsonHelper::CreateArray();
2134d949f91Sopenharmony_ci    ASSERT_NE(floatRoot, nullptr);
2144d949f91Sopenharmony_ci    float floatValue1 = 50.0f;
2154d949f91Sopenharmony_ci    float floatValue2 = -20.0f;
2164d949f91Sopenharmony_ci    ASSERT_TRUE(floatRoot->Add(floatValue1));
2174d949f91Sopenharmony_ci    ASSERT_TRUE(floatRoot->Add(floatValue2));
2184d949f91Sopenharmony_ci    std::vector<EffectJsonPtr> floatValues = floatRoot->GetArray();
2194d949f91Sopenharmony_ci    ASSERT_EQ(floatValues.size(), 2);
2204d949f91Sopenharmony_ci    ASSERT_EQ(floatValues[0]->GetFloat(), floatValue1);
2214d949f91Sopenharmony_ci    ASSERT_EQ(floatValues[1]->GetFloat(), floatValue2);
2224d949f91Sopenharmony_ci
2234d949f91Sopenharmony_ci    // int
2244d949f91Sopenharmony_ci    EffectJsonPtr intRoot = EFFECTJsonHelper::CreateArray();
2254d949f91Sopenharmony_ci    ASSERT_NE(intRoot, nullptr);
2264d949f91Sopenharmony_ci    int32_t intValue1 = 50;
2274d949f91Sopenharmony_ci    int32_t intValue2 = -20;
2284d949f91Sopenharmony_ci    int32_t intValue3 = 10;
2294d949f91Sopenharmony_ci    ASSERT_TRUE(intRoot->Add(intValue1));
2304d949f91Sopenharmony_ci    ASSERT_TRUE(intRoot->Add(intValue2));
2314d949f91Sopenharmony_ci    ASSERT_TRUE(intRoot->Add(intValue3));
2324d949f91Sopenharmony_ci    std::vector<EffectJsonPtr> intValues = intRoot->GetArray();
2334d949f91Sopenharmony_ci    ASSERT_EQ(intValues.size(), 3);
2344d949f91Sopenharmony_ci    ASSERT_EQ(intValues[0]->GetInt(), intValue1);
2354d949f91Sopenharmony_ci    ASSERT_EQ(intValues[1]->GetInt(), intValue2);
2364d949f91Sopenharmony_ci    ASSERT_EQ(intValues[2]->GetInt(), intValue3);
2374d949f91Sopenharmony_ci
2384d949f91Sopenharmony_ci    // uint
2394d949f91Sopenharmony_ci    EffectJsonPtr uintRoot = EFFECTJsonHelper::CreateArray();
2404d949f91Sopenharmony_ci    ASSERT_NE(uintRoot, nullptr);
2414d949f91Sopenharmony_ci    uint32_t uintValue = 50;
2424d949f91Sopenharmony_ci    ASSERT_TRUE(uintRoot->Add(uintValue));
2434d949f91Sopenharmony_ci    std::vector<EffectJsonPtr> uintValues = uintRoot->GetArray();
2444d949f91Sopenharmony_ci    ASSERT_EQ(uintValues.size(), 1);
2454d949f91Sopenharmony_ci    ASSERT_EQ(uintValues[0]->GetUInt(), uintValue);
2464d949f91Sopenharmony_ci}
2474d949f91Sopenharmony_ci
2484d949f91Sopenharmony_ciHWTEST_F(TestJsonHelper, CreateArray002, TestSize.Level0)
2494d949f91Sopenharmony_ci{
2504d949f91Sopenharmony_ci    // double
2514d949f91Sopenharmony_ci    EffectJsonPtr doubleRoot = EFFECTJsonHelper::CreateArray();
2524d949f91Sopenharmony_ci    double doubleValue = 30.5;
2534d949f91Sopenharmony_ci    ASSERT_TRUE(doubleRoot->Add(doubleValue));
2544d949f91Sopenharmony_ci    std::vector<EffectJsonPtr> doubleValues = doubleRoot->GetArray();
2554d949f91Sopenharmony_ci    ASSERT_EQ(doubleValues.size(), 1);
2564d949f91Sopenharmony_ci    ASSERT_DOUBLE_EQ(doubleValues[0]->GetDouble(), doubleValue);
2574d949f91Sopenharmony_ci
2584d949f91Sopenharmony_ci    // bool
2594d949f91Sopenharmony_ci    EffectJsonPtr boolRoot = EFFECTJsonHelper::CreateArray();
2604d949f91Sopenharmony_ci    bool boolValue = true;
2614d949f91Sopenharmony_ci    ASSERT_TRUE(boolRoot->Add(boolValue));
2624d949f91Sopenharmony_ci    std::vector<EffectJsonPtr> boolValues = boolRoot->GetArray();
2634d949f91Sopenharmony_ci    ASSERT_EQ(boolValues.size(), 1);
2644d949f91Sopenharmony_ci    ASSERT_DOUBLE_EQ(boolValues[0]->GetBool(), boolValue);
2654d949f91Sopenharmony_ci
2664d949f91Sopenharmony_ci    // string
2674d949f91Sopenharmony_ci    EffectJsonPtr stringRoot = EFFECTJsonHelper::CreateArray();
2684d949f91Sopenharmony_ci    ASSERT_TRUE(stringRoot->Add(TEST_STR));
2694d949f91Sopenharmony_ci    ASSERT_TRUE(stringRoot->Add(std::string(TEST_STR)));
2704d949f91Sopenharmony_ci    std::vector<EffectJsonPtr> strValues = stringRoot->GetArray();
2714d949f91Sopenharmony_ci    ASSERT_EQ(strValues.size(), 2);
2724d949f91Sopenharmony_ci    ASSERT_STREQ(strValues[0]->GetString().c_str(), TEST_STR);
2734d949f91Sopenharmony_ci    ASSERT_STREQ(strValues[1]->GetString().c_str(), TEST_STR);
2744d949f91Sopenharmony_ci}
2754d949f91Sopenharmony_ci
2764d949f91Sopenharmony_ciHWTEST_F(TestJsonHelper, Replace001, TestSize.Level0)
2774d949f91Sopenharmony_ci{
2784d949f91Sopenharmony_ci    std::string info = "{\"imageEffect\":{\"values\":{\"FloatTest\":50.1,\"IntTest\":-10,\"UintTest\":20,"
2794d949f91Sopenharmony_ci       "\"DoubleTest\":30.5,\"BoolTest\":true,\"StringTest\":\"testStr\"}}}";
2804d949f91Sopenharmony_ci
2814d949f91Sopenharmony_ci    EffectJsonPtr root = EFFECTJsonHelper::ParseJsonData(info);
2824d949f91Sopenharmony_ci    ASSERT_NE(root, nullptr);
2834d949f91Sopenharmony_ci    EffectJsonPtr imageEffect = root->GetElement(IMAGE_EFFECT);
2844d949f91Sopenharmony_ci    ASSERT_NE(imageEffect, nullptr);
2854d949f91Sopenharmony_ci    EffectJsonPtr values = imageEffect->GetElement(VALUES);
2864d949f91Sopenharmony_ci    ASSERT_NE(values, nullptr);
2874d949f91Sopenharmony_ci
2884d949f91Sopenharmony_ci    float floatValue = 70.0f;
2894d949f91Sopenharmony_ci    ASSERT_TRUE(values->Replace(FLOAT_TEST, floatValue));
2904d949f91Sopenharmony_ci    int32_t intValue = -50;
2914d949f91Sopenharmony_ci    ASSERT_TRUE(values->Replace(INT_TEST, intValue));
2924d949f91Sopenharmony_ci    uint32_t uintValue = 50;
2934d949f91Sopenharmony_ci    ASSERT_TRUE(values->Replace(UINT_TEST, uintValue));
2944d949f91Sopenharmony_ci    double doubleValue = 50.4;
2954d949f91Sopenharmony_ci    ASSERT_TRUE(values->Replace(DOUBLE_TEST, doubleValue));
2964d949f91Sopenharmony_ci    bool boolValue = false;
2974d949f91Sopenharmony_ci    ASSERT_TRUE(values->Replace(BOOL_TEST, boolValue));
2984d949f91Sopenharmony_ci    std::string strValue = "test";
2994d949f91Sopenharmony_ci    ASSERT_TRUE(values->Replace(STRING_TEST, strValue));
3004d949f91Sopenharmony_ci
3014d949f91Sopenharmony_ci    ASSERT_EQ(values->GetFloat(FLOAT_TEST), floatValue);
3024d949f91Sopenharmony_ci    ASSERT_EQ(values->GetInt(INT_TEST), intValue);
3034d949f91Sopenharmony_ci    ASSERT_EQ(values->GetUInt(UINT_TEST), uintValue);
3044d949f91Sopenharmony_ci    ASSERT_DOUBLE_EQ(values->GetDouble(DOUBLE_TEST), doubleValue);
3054d949f91Sopenharmony_ci    ASSERT_EQ(values->GetBool(BOOL_TEST), boolValue);
3064d949f91Sopenharmony_ci    ASSERT_STREQ(values->GetString(STRING_TEST).c_str(), strValue.c_str());
3074d949f91Sopenharmony_ci
3084d949f91Sopenharmony_ci    std::string strValue1 = "test1";
3094d949f91Sopenharmony_ci    const char *strValue1Ptr = strValue1.c_str();
3104d949f91Sopenharmony_ci    ASSERT_TRUE(values->Replace(STRING_TEST, strValue1Ptr));
3114d949f91Sopenharmony_ci    ASSERT_STREQ(values->GetString(STRING_TEST).c_str(), strValue1Ptr);
3124d949f91Sopenharmony_ci
3134d949f91Sopenharmony_ci    ASSERT_FALSE(values->Replace(std::string(STRING_TEST), (char *)nullptr));
3144d949f91Sopenharmony_ci}
3154d949f91Sopenharmony_ci
3164d949f91Sopenharmony_ciHWTEST_F(TestJsonHelper, Abnormal_001, TestSize.Level0)
3174d949f91Sopenharmony_ci{
3184d949f91Sopenharmony_ci    EffectJsonPtr root = EFFECTJsonHelper::CreateObject(false);
3194d949f91Sopenharmony_ci    ASSERT_NE(root, nullptr);
3204d949f91Sopenharmony_ci    ASSERT_TRUE(root->IsObject());
3214d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(INT_TEST, 10));
3224d949f91Sopenharmony_ci    ASSERT_TRUE(root->Put(STRING_TEST, TEST_STR));
3234d949f91Sopenharmony_ci
3244d949f91Sopenharmony_ci    EffectJsonPtr intKeyJsonPtr = root->GetElement(INT_TEST);
3254d949f91Sopenharmony_ci    ASSERT_NE(intKeyJsonPtr, nullptr);
3264d949f91Sopenharmony_ci    ASSERT_TRUE(intKeyJsonPtr->GetString().empty());
3274d949f91Sopenharmony_ci
3284d949f91Sopenharmony_ci    EffectJsonPtr stringKeyJsonPtr = root->GetElement(STRING_TEST);
3294d949f91Sopenharmony_ci    ASSERT_NE(stringKeyJsonPtr, nullptr);
3304d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetInt(), 0);
3314d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetInt(INT_TEST, INT32_MAX), INT32_MAX);
3324d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetUInt(), 0);
3334d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetUInt(INT_TEST, UINT32_MAX), UINT32_MAX);
3344d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetFloat(), 0);
3354d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetFloat(INT_TEST, 0), 0);
3364d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetDouble(), 0);
3374d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetDouble(INT_TEST, 0), 0);
3384d949f91Sopenharmony_ci    ASSERT_FALSE(stringKeyJsonPtr->GetBool());
3394d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetBool(INT_TEST, true), true);
3404d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetArray().size(), 0);
3414d949f91Sopenharmony_ci    ASSERT_EQ(stringKeyJsonPtr->GetArray(INT_TEST).size(), 0);
3424d949f91Sopenharmony_ci
3434d949f91Sopenharmony_ci    ASSERT_EQ(root->GetUInt(STRING_TEST, UINT32_MAX), UINT32_MAX);
3444d949f91Sopenharmony_ci    ASSERT_EQ(root->GetFloat(STRING_TEST, 0), 0);
3454d949f91Sopenharmony_ci    ASSERT_EQ(root->GetDouble(STRING_TEST, 0), 0);
3464d949f91Sopenharmony_ci    ASSERT_EQ(root->GetBool(STRING_TEST, true), true);
3474d949f91Sopenharmony_ci    ASSERT_EQ(root->GetArray(STRING_TEST).size(), 0);
3484d949f91Sopenharmony_ci
3494d949f91Sopenharmony_ci    EffectJsonPtr boolKeyJsonPtr = root->GetElement(BOOL_TEST);
3504d949f91Sopenharmony_ci    ASSERT_EQ(boolKeyJsonPtr, nullptr);
3514d949f91Sopenharmony_ci}
3524d949f91Sopenharmony_ci} // namespace Test
3534d949f91Sopenharmony_ci} // namespace Effect
3544d949f91Sopenharmony_ci} // namespace Media
3554d949f91Sopenharmony_ci} // namespace OHOS