17c804472Sopenharmony_ci/* 27c804472Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47c804472Sopenharmony_ci * you may not use this file except in compliance with the License. 57c804472Sopenharmony_ci * You may obtain a copy of the License at 67c804472Sopenharmony_ci * 77c804472Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87c804472Sopenharmony_ci * 97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127c804472Sopenharmony_ci * See the License for the specific language governing permissions and 137c804472Sopenharmony_ci * limitations under the License. 147c804472Sopenharmony_ci */ 157c804472Sopenharmony_ci#include <string> 167c804472Sopenharmony_ci#include <fstream> 177c804472Sopenharmony_ci#include "gtest/gtest.h" 187c804472Sopenharmony_ci#include "JsonReader.h" 197c804472Sopenharmony_ci 207c804472Sopenharmony_cinamespace { 217c804472Sopenharmony_ci std::string g_name = "jin"; 227c804472Sopenharmony_ci bool g_isChild = true; 237c804472Sopenharmony_ci int32_t g_age = 13; 247c804472Sopenharmony_ci uint32_t g_code1 = 214748; 257c804472Sopenharmony_ci int64_t g_code2 = 3333333333; 267c804472Sopenharmony_ci double g_height = 165.3; 277c804472Sopenharmony_ci std::string g_schoolName = "abc"; 287c804472Sopenharmony_ci std::string g_schoolAddr = "cba"; 297c804472Sopenharmony_ci std::string g_newName = "li"; 307c804472Sopenharmony_ci bool g_newIsChild = false; 317c804472Sopenharmony_ci int32_t g_newAge = 26; 327c804472Sopenharmony_ci uint32_t g_newCode1 = 2147489; 337c804472Sopenharmony_ci int64_t g_newCode2 = 3333333339; 347c804472Sopenharmony_ci double g_newHeight = 185.3; 357c804472Sopenharmony_ci std::string g_obj = R"({"name":"jin","isChild":true,"age":13,"code1":214748,"code2":3333333333, 367c804472Sopenharmony_ci "height":165.3,"school":{"schoolName":"abc","schoolAddr":"cba"}})"; 377c804472Sopenharmony_ci std::string g_arr = "[\"jin\",true,13,214748,3333333333,165.3,{\"schoolName\":\"abc\",\"schoolAddr\":\"cba\"}]"; 387c804472Sopenharmony_ci 397c804472Sopenharmony_ci TEST(JsonReaderTest, ParseJsonData2Test) 407c804472Sopenharmony_ci { 417c804472Sopenharmony_ci int age = 20; 427c804472Sopenharmony_ci std::string str = "{\"name\":\"jin\", \"age\":20}"; 437c804472Sopenharmony_ci Json2::Value val = JsonReader::ParseJsonData2(str); 447c804472Sopenharmony_ci EXPECT_EQ(val["name"].AsString(), "jin"); 457c804472Sopenharmony_ci EXPECT_EQ(val["age"].AsInt(), age); 467c804472Sopenharmony_ci } 477c804472Sopenharmony_ci 487c804472Sopenharmony_ci TEST(JsonReaderTest, CreateObjectTest) 497c804472Sopenharmony_ci { 507c804472Sopenharmony_ci Json2::Value school = JsonReader::CreateObject(); 517c804472Sopenharmony_ci school.Add("schoolName", g_schoolName.c_str()); 527c804472Sopenharmony_ci school.Add("schoolAddr", g_schoolAddr.c_str()); 537c804472Sopenharmony_ci Json2::Value student = JsonReader::CreateObject(); 547c804472Sopenharmony_ci student.Add("name", g_name.c_str()); 557c804472Sopenharmony_ci EXPECT_EQ(student["name"].AsString(), g_name); 567c804472Sopenharmony_ci student.Add("isChild", g_isChild); 577c804472Sopenharmony_ci EXPECT_EQ(student["isChild"].AsBool(), g_isChild); 587c804472Sopenharmony_ci student.Add("age", g_age); 597c804472Sopenharmony_ci EXPECT_EQ(student["age"].AsInt(), g_age); 607c804472Sopenharmony_ci student.Add("code1", g_code1); 617c804472Sopenharmony_ci EXPECT_EQ(student["code1"].AsUInt(), g_code1); 627c804472Sopenharmony_ci student.Add("code2", g_code2); 637c804472Sopenharmony_ci EXPECT_EQ(student["code2"].AsInt64(), g_code2); 647c804472Sopenharmony_ci student.Add("height", g_height); 657c804472Sopenharmony_ci EXPECT_EQ(student["height"].AsDouble(), g_height); 667c804472Sopenharmony_ci student.Add("school", school); 677c804472Sopenharmony_ci EXPECT_EQ(student["school"]["schoolName"].AsString(), g_schoolName); 687c804472Sopenharmony_ci EXPECT_EQ(student["school"]["schoolAddr"].AsString(), g_schoolAddr); 697c804472Sopenharmony_ci } 707c804472Sopenharmony_ci 717c804472Sopenharmony_ci TEST(JsonReaderTest, CreateArrayTest) 727c804472Sopenharmony_ci { 737c804472Sopenharmony_ci Json2::Value school = JsonReader::CreateObject(); 747c804472Sopenharmony_ci school.Add("schoolName", g_schoolName.c_str()); 757c804472Sopenharmony_ci school.Add("schoolAddr", g_schoolAddr.c_str()); 767c804472Sopenharmony_ci Json2::Value books = JsonReader::CreateArray(); 777c804472Sopenharmony_ci books.Add(g_name.c_str()); 787c804472Sopenharmony_ci books.Add(g_isChild); 797c804472Sopenharmony_ci books.Add(g_age); 807c804472Sopenharmony_ci books.Add(g_code1); 817c804472Sopenharmony_ci books.Add(g_code2); 827c804472Sopenharmony_ci books.Add(g_height); 837c804472Sopenharmony_ci books.Add(school); 847c804472Sopenharmony_ci int size = 7; 857c804472Sopenharmony_ci int actualSize = books.GetArraySize(); 867c804472Sopenharmony_ci EXPECT_EQ(actualSize, size); 877c804472Sopenharmony_ci int index = 0; 887c804472Sopenharmony_ci EXPECT_EQ(books.GetArrayItem(index++).AsString(), g_name); 897c804472Sopenharmony_ci EXPECT_EQ(books.GetArrayItem(index++).AsBool(), g_isChild); 907c804472Sopenharmony_ci EXPECT_EQ(books.GetArrayItem(index++).AsInt(), g_age); 917c804472Sopenharmony_ci EXPECT_EQ(books.GetArrayItem(index++).AsUInt(), g_code1); 927c804472Sopenharmony_ci EXPECT_EQ(books.GetArrayItem(index++).AsInt64(), g_code2); 937c804472Sopenharmony_ci EXPECT_EQ(books.GetArrayItem(index++).AsDouble(), g_height); 947c804472Sopenharmony_ci EXPECT_EQ(books.GetArrayItem(index)["schoolName"].AsString(), g_schoolName); 957c804472Sopenharmony_ci EXPECT_EQ(books.GetArrayItem(index)["schoolAddr"].AsString(), g_schoolAddr); 967c804472Sopenharmony_ci } 977c804472Sopenharmony_ci 987c804472Sopenharmony_ci TEST(JsonReaderTest, CreateBoolTest) 997c804472Sopenharmony_ci { 1007c804472Sopenharmony_ci Json2::Value resultJson = JsonReader::CreateObject(); 1017c804472Sopenharmony_ci resultJson.Add("result", JsonReader::CreateBool(true)); 1027c804472Sopenharmony_ci EXPECT_TRUE(resultJson["result"].AsBool()); 1037c804472Sopenharmony_ci } 1047c804472Sopenharmony_ci 1057c804472Sopenharmony_ci TEST(JsonReaderTest, CreateStringTest) 1067c804472Sopenharmony_ci { 1077c804472Sopenharmony_ci std::string content = "content"; 1087c804472Sopenharmony_ci Json2::Value resultJson = JsonReader::CreateObject(); 1097c804472Sopenharmony_ci resultJson.Add("content", JsonReader::CreateString(content)); 1107c804472Sopenharmony_ci EXPECT_EQ(resultJson["content"].AsString(), content); 1117c804472Sopenharmony_ci } 1127c804472Sopenharmony_ci 1137c804472Sopenharmony_ci TEST(JsonReaderTest, DepthCopyTest) 1147c804472Sopenharmony_ci { 1157c804472Sopenharmony_ci std::string content = "content"; 1167c804472Sopenharmony_ci Json2::Value resultJson = JsonReader::CreateObject(); 1177c804472Sopenharmony_ci resultJson.Add("content", JsonReader::CreateString(content)); 1187c804472Sopenharmony_ci Json2::Value newJson = JsonReader::DepthCopy(resultJson); 1197c804472Sopenharmony_ci resultJson.Clear(); 1207c804472Sopenharmony_ci EXPECT_EQ(newJson["content"].AsString(), content); 1217c804472Sopenharmony_ci } 1227c804472Sopenharmony_ci 1237c804472Sopenharmony_ci TEST(JsonReaderTest, ObjectReplaceTest) 1247c804472Sopenharmony_ci { 1257c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 1267c804472Sopenharmony_ci objVal.Replace("name", g_newName.c_str()); 1277c804472Sopenharmony_ci EXPECT_EQ(objVal["name"].AsString(), g_newName); 1287c804472Sopenharmony_ci objVal.Replace("isChild", g_newIsChild); 1297c804472Sopenharmony_ci EXPECT_EQ(objVal["isChild"].AsBool(), g_newIsChild); 1307c804472Sopenharmony_ci objVal.Replace("age", g_newAge); 1317c804472Sopenharmony_ci EXPECT_EQ(objVal["age"].AsInt(), g_newAge); 1327c804472Sopenharmony_ci objVal.Replace("code1", g_newCode1); 1337c804472Sopenharmony_ci EXPECT_EQ(objVal["code1"].AsUInt(), g_newCode1); 1347c804472Sopenharmony_ci objVal.Replace("code2", g_newCode2); 1357c804472Sopenharmony_ci EXPECT_EQ(objVal["code2"].AsInt64(), g_newCode2); 1367c804472Sopenharmony_ci objVal.Replace("height", g_newHeight); 1377c804472Sopenharmony_ci EXPECT_EQ(objVal["height"].AsDouble(), g_newHeight); 1387c804472Sopenharmony_ci std::string content = "content"; 1397c804472Sopenharmony_ci Json2::Value resultJson = JsonReader::CreateObject(); 1407c804472Sopenharmony_ci resultJson.Add("content", JsonReader::CreateString(content)); 1417c804472Sopenharmony_ci objVal.Replace("school", resultJson); 1427c804472Sopenharmony_ci EXPECT_EQ(objVal["school"]["content"].AsString(), content); 1437c804472Sopenharmony_ci } 1447c804472Sopenharmony_ci 1457c804472Sopenharmony_ci TEST(JsonReaderTest, ArrayReplaceTest) 1467c804472Sopenharmony_ci { 1477c804472Sopenharmony_ci Json2::Value arrVal = JsonReader::ParseJsonData2(g_arr); 1487c804472Sopenharmony_ci int index = 0; 1497c804472Sopenharmony_ci arrVal.Replace(index, g_newName.c_str()); 1507c804472Sopenharmony_ci EXPECT_EQ(arrVal.GetArrayItem(index++).AsString(), g_newName); 1517c804472Sopenharmony_ci arrVal.Replace(index, g_newIsChild); 1527c804472Sopenharmony_ci EXPECT_EQ(arrVal.GetArrayItem(index++).AsBool(), g_newIsChild); 1537c804472Sopenharmony_ci arrVal.Replace(index, g_newAge); 1547c804472Sopenharmony_ci EXPECT_EQ(arrVal.GetArrayItem(index++).AsInt(), g_newAge); 1557c804472Sopenharmony_ci arrVal.Replace(index, g_newCode1); 1567c804472Sopenharmony_ci EXPECT_EQ(arrVal.GetArrayItem(index++).AsUInt(), g_newCode1); 1577c804472Sopenharmony_ci arrVal.Replace(index, g_newCode2); 1587c804472Sopenharmony_ci EXPECT_EQ(arrVal.GetArrayItem(index++).AsInt64(), g_newCode2); 1597c804472Sopenharmony_ci arrVal.Replace(index, g_newHeight); 1607c804472Sopenharmony_ci EXPECT_EQ(arrVal.GetArrayItem(index++).AsDouble(), g_newHeight); 1617c804472Sopenharmony_ci std::string content = "content"; 1627c804472Sopenharmony_ci Json2::Value resultJson = JsonReader::CreateObject(); 1637c804472Sopenharmony_ci resultJson.Add("content", JsonReader::CreateString(content)); 1647c804472Sopenharmony_ci arrVal.Replace(index, resultJson); 1657c804472Sopenharmony_ci EXPECT_EQ(arrVal.GetArrayItem(index)["content"].AsString(), content); 1667c804472Sopenharmony_ci } 1677c804472Sopenharmony_ci 1687c804472Sopenharmony_ci TEST(JsonReaderTest, IsValueTest) 1697c804472Sopenharmony_ci { 1707c804472Sopenharmony_ci Json2::Value arrVal = JsonReader::ParseJsonData2(g_arr); 1717c804472Sopenharmony_ci EXPECT_TRUE(arrVal.IsArray()); 1727c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 1737c804472Sopenharmony_ci EXPECT_FALSE(objVal.IsNull()); 1747c804472Sopenharmony_ci EXPECT_TRUE(objVal.IsMember("school")); 1757c804472Sopenharmony_ci EXPECT_TRUE(objVal["name"].IsString()); 1767c804472Sopenharmony_ci EXPECT_TRUE(objVal["age"].IsNumber()); 1777c804472Sopenharmony_ci EXPECT_TRUE(objVal["age"].IsInt()); 1787c804472Sopenharmony_ci EXPECT_TRUE(objVal["code1"].IsUInt()); 1797c804472Sopenharmony_ci EXPECT_TRUE(objVal["code2"].IsUInt64()); 1807c804472Sopenharmony_ci EXPECT_TRUE(objVal["isChild"].IsBool()); 1817c804472Sopenharmony_ci EXPECT_TRUE(objVal["height"].IsDouble()); 1827c804472Sopenharmony_ci } 1837c804472Sopenharmony_ci 1847c804472Sopenharmony_ci TEST(JsonReaderTest, GetValueTest) 1857c804472Sopenharmony_ci { 1867c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 1877c804472Sopenharmony_ci EXPECT_EQ(objVal.GetString("name"), g_name); 1887c804472Sopenharmony_ci EXPECT_EQ(objVal.GetBool("isChild"), g_isChild); 1897c804472Sopenharmony_ci EXPECT_EQ(objVal.GetInt("age"), g_age); 1907c804472Sopenharmony_ci EXPECT_EQ(objVal.GetUInt("code1"), g_code1); 1917c804472Sopenharmony_ci EXPECT_EQ(objVal.GetInt64("code2"), g_code2); 1927c804472Sopenharmony_ci EXPECT_EQ(objVal.GetFloat("height"), (float)g_height); 1937c804472Sopenharmony_ci EXPECT_EQ(objVal.GetDouble("height"), g_height); 1947c804472Sopenharmony_ci EXPECT_EQ(objVal.GetDouble("height1", 0.0), 0.0); // key not exist retrun default value 1957c804472Sopenharmony_ci EXPECT_EQ(objVal.GetValue("school").GetString("schoolName"), g_schoolName); 1967c804472Sopenharmony_ci EXPECT_EQ(objVal.GetValue("school").GetString("schoolAddr"), g_schoolAddr); 1977c804472Sopenharmony_ci } 1987c804472Sopenharmony_ci 1997c804472Sopenharmony_ci TEST(JsonReaderTest, OperatorBracketCharPtrTest) 2007c804472Sopenharmony_ci { 2017c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 2027c804472Sopenharmony_ci const char* key = "name"; 2037c804472Sopenharmony_ci Json2::Value name = objVal[key]; 2047c804472Sopenharmony_ci std::string value = name.AsString(); 2057c804472Sopenharmony_ci EXPECT_EQ(value, g_name); 2067c804472Sopenharmony_ci // key not exist 2077c804472Sopenharmony_ci const char* key2 = "name22"; 2087c804472Sopenharmony_ci Json2::Value name2 = objVal[key2]; 2097c804472Sopenharmony_ci std::string value2 = name2.AsString(); 2107c804472Sopenharmony_ci EXPECT_EQ(value2, ""); 2117c804472Sopenharmony_ci } 2127c804472Sopenharmony_ci 2137c804472Sopenharmony_ci TEST(JsonReaderTest, OperatorBracketConstCharPtrTest) 2147c804472Sopenharmony_ci { 2157c804472Sopenharmony_ci const Json2::Value objVal = static_cast<const Json2::Value>(JsonReader::ParseJsonData2(g_obj)); 2167c804472Sopenharmony_ci const char* key = "name"; 2177c804472Sopenharmony_ci const Json2::Value name = objVal[key]; 2187c804472Sopenharmony_ci std::string value = name.AsString(); 2197c804472Sopenharmony_ci EXPECT_EQ(value, g_name); 2207c804472Sopenharmony_ci // key not exist 2217c804472Sopenharmony_ci const char* key2 = "name22"; 2227c804472Sopenharmony_ci Json2::Value name2 = objVal[key2]; 2237c804472Sopenharmony_ci std::string value2 = name2.AsString(); 2247c804472Sopenharmony_ci EXPECT_EQ(value2, ""); 2257c804472Sopenharmony_ci } 2267c804472Sopenharmony_ci 2277c804472Sopenharmony_ci TEST(ValueTest, OperatorBracketStdStringTest) 2287c804472Sopenharmony_ci { 2297c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 2307c804472Sopenharmony_ci std::string key = "name"; 2317c804472Sopenharmony_ci Json2::Value name = objVal[key]; 2327c804472Sopenharmony_ci std::string value = name.AsString(); 2337c804472Sopenharmony_ci EXPECT_EQ(value, g_name); 2347c804472Sopenharmony_ci // key not exist 2357c804472Sopenharmony_ci std::string key2 = "name22"; 2367c804472Sopenharmony_ci Json2::Value name2 = objVal[key2]; 2377c804472Sopenharmony_ci std::string value2 = name2.AsString(); 2387c804472Sopenharmony_ci EXPECT_EQ(value2, ""); 2397c804472Sopenharmony_ci } 2407c804472Sopenharmony_ci 2417c804472Sopenharmony_ci TEST(ValueTest, OperatorBracketConstStdStringTest) 2427c804472Sopenharmony_ci { 2437c804472Sopenharmony_ci const Json2::Value objVal = static_cast<const Json2::Value>(JsonReader::ParseJsonData2(g_obj)); 2447c804472Sopenharmony_ci std::string key = "name"; 2457c804472Sopenharmony_ci const Json2::Value name = objVal[key]; 2467c804472Sopenharmony_ci std::string value = name.AsString(); 2477c804472Sopenharmony_ci EXPECT_EQ(value, g_name); 2487c804472Sopenharmony_ci // key not exist 2497c804472Sopenharmony_ci std::string key2 = "name22"; 2507c804472Sopenharmony_ci Json2::Value name2 = objVal[key2]; 2517c804472Sopenharmony_ci std::string value2 = name2.AsString(); 2527c804472Sopenharmony_ci EXPECT_EQ(value2, ""); 2537c804472Sopenharmony_ci } 2547c804472Sopenharmony_ci 2557c804472Sopenharmony_ci TEST(ValueTest, GetMemberNamesTest) 2567c804472Sopenharmony_ci { 2577c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 2587c804472Sopenharmony_ci Json2::Value::Members members = objVal.GetMemberNames(); 2597c804472Sopenharmony_ci int size = 7; 2607c804472Sopenharmony_ci int memberSize = members.size(); 2617c804472Sopenharmony_ci EXPECT_EQ(memberSize, size); 2627c804472Sopenharmony_ci } 2637c804472Sopenharmony_ci 2647c804472Sopenharmony_ci TEST(ValueTest, ToStringTest_NoJsonPtr) 2657c804472Sopenharmony_ci { 2667c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 2677c804472Sopenharmony_ci std::string key2 = "name22"; 2687c804472Sopenharmony_ci Json2::Value name2 = objVal[key2]; 2697c804472Sopenharmony_ci std::string str = name2.ToString(); 2707c804472Sopenharmony_ci EXPECT_TRUE(str.empty()); 2717c804472Sopenharmony_ci } 2727c804472Sopenharmony_ci 2737c804472Sopenharmony_ci TEST(ValueTest, ToStyledStringTest) 2747c804472Sopenharmony_ci { 2757c804472Sopenharmony_ci // no jsonPtr 2767c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 2777c804472Sopenharmony_ci std::string key1 = "name22"; 2787c804472Sopenharmony_ci Json2::Value name1= objVal[key1]; 2797c804472Sopenharmony_ci std::string str1 = name1.ToStyledString(); 2807c804472Sopenharmony_ci EXPECT_TRUE(str1.empty()); 2817c804472Sopenharmony_ci // jsonPtr exist 2827c804472Sopenharmony_ci std::string key2 = "name"; 2837c804472Sopenharmony_ci Json2::Value name2= objVal[key2]; 2847c804472Sopenharmony_ci std::string str2 = name2.ToStyledString(); 2857c804472Sopenharmony_ci EXPECT_FALSE(str2.empty()); 2867c804472Sopenharmony_ci } 2877c804472Sopenharmony_ci 2887c804472Sopenharmony_ci TEST(ValueTest, IsIntTest) 2897c804472Sopenharmony_ci { 2907c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 2917c804472Sopenharmony_ci std::string key1 = "name"; 2927c804472Sopenharmony_ci Json2::Value name = objVal[key1]; 2937c804472Sopenharmony_ci EXPECT_FALSE(name.IsInt()); 2947c804472Sopenharmony_ci 2957c804472Sopenharmony_ci std::string key2 = "age"; 2967c804472Sopenharmony_ci Json2::Value age = objVal[key2]; 2977c804472Sopenharmony_ci EXPECT_TRUE(age.IsInt()); 2987c804472Sopenharmony_ci } 2997c804472Sopenharmony_ci 3007c804472Sopenharmony_ci TEST(ValueTest, IsUIntTest) 3017c804472Sopenharmony_ci { 3027c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3037c804472Sopenharmony_ci std::string key1 = "name"; 3047c804472Sopenharmony_ci Json2::Value name = objVal[key1]; 3057c804472Sopenharmony_ci EXPECT_FALSE(name.IsUInt()); 3067c804472Sopenharmony_ci 3077c804472Sopenharmony_ci std::string key2 = "age"; 3087c804472Sopenharmony_ci Json2::Value age = objVal[key2]; 3097c804472Sopenharmony_ci EXPECT_TRUE(age.IsUInt()); 3107c804472Sopenharmony_ci } 3117c804472Sopenharmony_ci 3127c804472Sopenharmony_ci TEST(ValueTest, IsInt64Test) 3137c804472Sopenharmony_ci { 3147c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3157c804472Sopenharmony_ci std::string key1 = "name"; 3167c804472Sopenharmony_ci Json2::Value name = objVal[key1]; 3177c804472Sopenharmony_ci EXPECT_FALSE(name.IsInt64()); 3187c804472Sopenharmony_ci 3197c804472Sopenharmony_ci std::string key2 = "age"; 3207c804472Sopenharmony_ci Json2::Value age = objVal[key2]; 3217c804472Sopenharmony_ci EXPECT_TRUE(age.IsInt64()); 3227c804472Sopenharmony_ci } 3237c804472Sopenharmony_ci 3247c804472Sopenharmony_ci TEST(ValueTest, IsUInt64Test) 3257c804472Sopenharmony_ci { 3267c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3277c804472Sopenharmony_ci std::string key1 = "name"; 3287c804472Sopenharmony_ci Json2::Value name = objVal[key1]; 3297c804472Sopenharmony_ci EXPECT_FALSE(name.IsUInt64()); 3307c804472Sopenharmony_ci 3317c804472Sopenharmony_ci std::string key2 = "age"; 3327c804472Sopenharmony_ci Json2::Value age = objVal[key2]; 3337c804472Sopenharmony_ci EXPECT_TRUE(age.IsUInt64()); 3347c804472Sopenharmony_ci } 3357c804472Sopenharmony_ci 3367c804472Sopenharmony_ci TEST(ValueTest, IsDoubleTest) 3377c804472Sopenharmony_ci { 3387c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3397c804472Sopenharmony_ci std::string key1 = "name"; 3407c804472Sopenharmony_ci Json2::Value name = objVal[key1]; 3417c804472Sopenharmony_ci EXPECT_FALSE(name.IsDouble()); 3427c804472Sopenharmony_ci 3437c804472Sopenharmony_ci std::string key2 = "age"; 3447c804472Sopenharmony_ci Json2::Value age = objVal[key2]; 3457c804472Sopenharmony_ci EXPECT_TRUE(age.IsDouble()); 3467c804472Sopenharmony_ci } 3477c804472Sopenharmony_ci 3487c804472Sopenharmony_ci TEST(ValueTest, IsObjectTest) 3497c804472Sopenharmony_ci { 3507c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3517c804472Sopenharmony_ci std::string key = "school"; 3527c804472Sopenharmony_ci Json2::Value school = objVal[key]; 3537c804472Sopenharmony_ci EXPECT_TRUE(school.IsObject()); 3547c804472Sopenharmony_ci } 3557c804472Sopenharmony_ci 3567c804472Sopenharmony_ci TEST(ValueTest, GetBoolTest_TypeErr) 3577c804472Sopenharmony_ci { 3587c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3597c804472Sopenharmony_ci bool ret = objVal.GetBool("name"); 3607c804472Sopenharmony_ci EXPECT_FALSE(ret); 3617c804472Sopenharmony_ci } 3627c804472Sopenharmony_ci 3637c804472Sopenharmony_ci TEST(ValueTest, GetStringTest_TypeErr) 3647c804472Sopenharmony_ci { 3657c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3667c804472Sopenharmony_ci std::string ret = objVal.GetString("age"); 3677c804472Sopenharmony_ci EXPECT_EQ(ret, ""); 3687c804472Sopenharmony_ci } 3697c804472Sopenharmony_ci 3707c804472Sopenharmony_ci TEST(ValueTest, AsFolatTest_TypeErr) 3717c804472Sopenharmony_ci { 3727c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3737c804472Sopenharmony_ci Json2::Value height = objVal.GetValue("height"); 3747c804472Sopenharmony_ci float val = height.AsFloat(); 3757c804472Sopenharmony_ci float expectVal = 165.3; 3767c804472Sopenharmony_ci EXPECT_EQ(val, expectVal); 3777c804472Sopenharmony_ci } 3787c804472Sopenharmony_ci 3797c804472Sopenharmony_ci TEST(ValueTest, AsDoubleTest_TypeErr) 3807c804472Sopenharmony_ci { 3817c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3827c804472Sopenharmony_ci Json2::Value name = objVal.GetValue("name"); 3837c804472Sopenharmony_ci double val = name.AsDouble(); 3847c804472Sopenharmony_ci float expectVal = 0.0; 3857c804472Sopenharmony_ci EXPECT_EQ(val, expectVal); 3867c804472Sopenharmony_ci } 3877c804472Sopenharmony_ci 3887c804472Sopenharmony_ci TEST(ValueTest, AsBoolTest_TypeErr) 3897c804472Sopenharmony_ci { 3907c804472Sopenharmony_ci Json2::Value objVal = JsonReader::ParseJsonData2(g_obj); 3917c804472Sopenharmony_ci Json2::Value name = objVal.GetValue("name"); 3927c804472Sopenharmony_ci bool val = name.AsBool(); 3937c804472Sopenharmony_ci EXPECT_FALSE(val); 3947c804472Sopenharmony_ci } 3957c804472Sopenharmony_ci 3967c804472Sopenharmony_ci TEST(JsonReaderTest, CreateNullTest) 3977c804472Sopenharmony_ci { 3987c804472Sopenharmony_ci Json2::Value value = JsonReader::CreateNull(); 3997c804472Sopenharmony_ci EXPECT_TRUE(value.IsNull()); 4007c804472Sopenharmony_ci } 4017c804472Sopenharmony_ci 4027c804472Sopenharmony_ci TEST(JsonReaderTest, GetKeyTest) 4037c804472Sopenharmony_ci { 4047c804472Sopenharmony_ci Json2::Value jsonData1 = JsonReader::ParseJsonData2(g_obj); 4057c804472Sopenharmony_ci Json2::Value height = jsonData1.GetValue("height"); 4067c804472Sopenharmony_ci std::string str = height.GetKey(); 4077c804472Sopenharmony_ci EXPECT_EQ(str, "height"); 4087c804472Sopenharmony_ci } 4097c804472Sopenharmony_ci 4107c804472Sopenharmony_ci TEST(JsonReaderTest, ReadFileTest) 4117c804472Sopenharmony_ci { 4127c804472Sopenharmony_ci std::string path = "1.json"; 4137c804472Sopenharmony_ci std::ofstream file(path); 4147c804472Sopenharmony_ci if (!file) { 4157c804472Sopenharmony_ci printf("Error creating file: %s\r\n", path.c_str()); 4167c804472Sopenharmony_ci EXPECT_TRUE(false); 4177c804472Sopenharmony_ci return; 4187c804472Sopenharmony_ci } 4197c804472Sopenharmony_ci file << g_obj; 4207c804472Sopenharmony_ci file.close(); 4217c804472Sopenharmony_ci std::string readStr = JsonReader::ReadFile(path); 4227c804472Sopenharmony_ci EXPECT_EQ(readStr, g_obj); 4237c804472Sopenharmony_ci } 4247c804472Sopenharmony_ci 4257c804472Sopenharmony_ci TEST(JsonReaderTest, GetErrorPtrTest) 4267c804472Sopenharmony_ci { 4277c804472Sopenharmony_ci Json2::Value jsonData = JsonReader::ParseJsonData2(g_obj); 4287c804472Sopenharmony_ci std::string errors = JsonReader::GetErrorPtr(); 4297c804472Sopenharmony_ci EXPECT_FALSE(jsonData.IsNull()); 4307c804472Sopenharmony_ci EXPECT_TRUE(errors.empty()); 4317c804472Sopenharmony_ci } 4327c804472Sopenharmony_ci 4337c804472Sopenharmony_ci TEST(JsonReaderTest, AddTest_Err) 4347c804472Sopenharmony_ci { 4357c804472Sopenharmony_ci Json2::Value jsonData = JsonReader::ParseJsonData2(g_obj); 4367c804472Sopenharmony_ci // key is nullptr 4377c804472Sopenharmony_ci const char* key = nullptr; 4387c804472Sopenharmony_ci bool ret = jsonData.Add(key, "aaa"); 4397c804472Sopenharmony_ci EXPECT_FALSE(ret); 4407c804472Sopenharmony_ci ret = jsonData.Add(key, false); 4417c804472Sopenharmony_ci EXPECT_FALSE(ret); 4427c804472Sopenharmony_ci double d = 22.0; 4437c804472Sopenharmony_ci ret = jsonData.Add(key, d); 4447c804472Sopenharmony_ci EXPECT_FALSE(ret); 4457c804472Sopenharmony_ci std::string str = "{\"name\":\"jin\", \"age\":20}"; 4467c804472Sopenharmony_ci Json2::Value val = JsonReader::ParseJsonData2(str); 4477c804472Sopenharmony_ci ret = jsonData.Add(key, val); 4487c804472Sopenharmony_ci EXPECT_FALSE(ret); 4497c804472Sopenharmony_ci } 4507c804472Sopenharmony_ci 4517c804472Sopenharmony_ci TEST(JsonReaderTest, AddTest_ArrayErr) 4527c804472Sopenharmony_ci { 4537c804472Sopenharmony_ci Json2::Value jsonData = JsonReader::ParseJsonData2(g_obj); 4547c804472Sopenharmony_ci bool ret = jsonData.Add("aaa"); 4557c804472Sopenharmony_ci EXPECT_FALSE(ret); 4567c804472Sopenharmony_ci ret = jsonData.Add(false); 4577c804472Sopenharmony_ci EXPECT_FALSE(ret); 4587c804472Sopenharmony_ci double d = 436.96; 4597c804472Sopenharmony_ci ret = jsonData.Add(d); 4607c804472Sopenharmony_ci EXPECT_FALSE(ret); 4617c804472Sopenharmony_ci Json2::Value val = JsonReader::CreateNull(); 4627c804472Sopenharmony_ci ret = jsonData.Add(val); 4637c804472Sopenharmony_ci EXPECT_FALSE(ret); 4647c804472Sopenharmony_ci } 4657c804472Sopenharmony_ci 4667c804472Sopenharmony_ci TEST(JsonReaderTest, ReplaceTest_Err) 4677c804472Sopenharmony_ci { 4687c804472Sopenharmony_ci Json2::Value jsonData = JsonReader::ParseJsonData2(g_obj); 4697c804472Sopenharmony_ci // key is nullptr 4707c804472Sopenharmony_ci const char* key = nullptr; 4717c804472Sopenharmony_ci bool ret = jsonData.Replace(key, "aaa"); 4727c804472Sopenharmony_ci EXPECT_FALSE(ret); 4737c804472Sopenharmony_ci ret = jsonData.Replace(key, false); 4747c804472Sopenharmony_ci EXPECT_FALSE(ret); 4757c804472Sopenharmony_ci double d = 22.0; 4767c804472Sopenharmony_ci ret = jsonData.Replace(key, d); 4777c804472Sopenharmony_ci EXPECT_FALSE(ret); 4787c804472Sopenharmony_ci std::string str = "{\"name\":\"jin\", \"age\":20}"; 4797c804472Sopenharmony_ci Json2::Value val = JsonReader::ParseJsonData2(str); 4807c804472Sopenharmony_ci ret = jsonData.Replace(key, val); 4817c804472Sopenharmony_ci EXPECT_FALSE(ret); 4827c804472Sopenharmony_ci } 4837c804472Sopenharmony_ci 4847c804472Sopenharmony_ci TEST(JsonReaderTest, ReplaceTest_ArrayErr) 4857c804472Sopenharmony_ci { 4867c804472Sopenharmony_ci Json2::Value jsonData = JsonReader::ParseJsonData2(g_obj); 4877c804472Sopenharmony_ci // key is nullptr 4887c804472Sopenharmony_ci const char* key = nullptr; 4897c804472Sopenharmony_ci int invalidIndex = -1; 4907c804472Sopenharmony_ci bool ret = jsonData.Replace(invalidIndex, "aaa"); 4917c804472Sopenharmony_ci EXPECT_FALSE(ret); 4927c804472Sopenharmony_ci ret = jsonData.Replace(invalidIndex, false); 4937c804472Sopenharmony_ci EXPECT_FALSE(ret); 4947c804472Sopenharmony_ci double d = 22.0; 4957c804472Sopenharmony_ci ret = jsonData.Replace(invalidIndex, d); 4967c804472Sopenharmony_ci EXPECT_FALSE(ret); 4977c804472Sopenharmony_ci std::string str = "{\"name\":\"jin\", \"age\":20}"; 4987c804472Sopenharmony_ci Json2::Value val = JsonReader::ParseJsonData2(str); 4997c804472Sopenharmony_ci ret = jsonData.Replace(invalidIndex, val); 5007c804472Sopenharmony_ci EXPECT_FALSE(ret); 5017c804472Sopenharmony_ci } 5027c804472Sopenharmony_ci}