xref: /aosp_15_r20/external/webrtc/rtc_base/strings/json_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright 2009 The WebRTC Project Authors. All rights reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/strings/json.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #include <vector>
14*d9f75844SAndroid Build Coastguard Worker 
15*d9f75844SAndroid Build Coastguard Worker #include "test/gtest.h"
16*d9f75844SAndroid Build Coastguard Worker 
17*d9f75844SAndroid Build Coastguard Worker namespace rtc {
18*d9f75844SAndroid Build Coastguard Worker 
19*d9f75844SAndroid Build Coastguard Worker static Json::Value in_s("foo");
20*d9f75844SAndroid Build Coastguard Worker static Json::Value in_sn("99");
21*d9f75844SAndroid Build Coastguard Worker static Json::Value in_si("-99");
22*d9f75844SAndroid Build Coastguard Worker static Json::Value in_sb("true");
23*d9f75844SAndroid Build Coastguard Worker static Json::Value in_sd("1.2");
24*d9f75844SAndroid Build Coastguard Worker static Json::Value in_n(12);
25*d9f75844SAndroid Build Coastguard Worker static Json::Value in_i(-12);
26*d9f75844SAndroid Build Coastguard Worker static Json::Value in_u(34U);
27*d9f75844SAndroid Build Coastguard Worker static Json::Value in_b(true);
28*d9f75844SAndroid Build Coastguard Worker static Json::Value in_d(1.2);
29*d9f75844SAndroid Build Coastguard Worker static Json::Value big_sn("12345678901234567890");
30*d9f75844SAndroid Build Coastguard Worker static Json::Value big_si("-12345678901234567890");
31*d9f75844SAndroid Build Coastguard Worker static Json::Value big_u(0xFFFFFFFF);
32*d9f75844SAndroid Build Coastguard Worker static Json::Value bad_a(Json::arrayValue);
33*d9f75844SAndroid Build Coastguard Worker static Json::Value bad_o(Json::objectValue);
34*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,GetString)35*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, GetString) {
36*d9f75844SAndroid Build Coastguard Worker   std::string out;
37*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetStringFromJson(in_s, &out));
38*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("foo", out);
39*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetStringFromJson(in_sn, &out));
40*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("99", out);
41*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetStringFromJson(in_si, &out));
42*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("-99", out);
43*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetStringFromJson(in_i, &out));
44*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("-12", out);
45*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetStringFromJson(in_n, &out));
46*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("12", out);
47*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetStringFromJson(in_u, &out));
48*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("34", out);
49*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetStringFromJson(in_b, &out));
50*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("true", out);
51*d9f75844SAndroid Build Coastguard Worker   // Not supported here yet.
52*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetStringFromJson(bad_a, &out));
53*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetStringFromJson(bad_o, &out));
54*d9f75844SAndroid Build Coastguard Worker }
55*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,GetInt)56*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, GetInt) {
57*d9f75844SAndroid Build Coastguard Worker   int out;
58*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetIntFromJson(in_sn, &out));
59*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(99, out);
60*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetIntFromJson(in_si, &out));
61*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(-99, out);
62*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetIntFromJson(in_n, &out));
63*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(12, out);
64*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetIntFromJson(in_i, &out));
65*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(-12, out);
66*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetIntFromJson(in_u, &out));
67*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(34, out);
68*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetIntFromJson(in_b, &out));
69*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1, out);
70*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetIntFromJson(in_s, &out));
71*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetIntFromJson(big_sn, &out));
72*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetIntFromJson(big_si, &out));
73*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetIntFromJson(big_u, &out));
74*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetIntFromJson(bad_a, &out));
75*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetIntFromJson(bad_o, &out));
76*d9f75844SAndroid Build Coastguard Worker }
77*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,GetUInt)78*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, GetUInt) {
79*d9f75844SAndroid Build Coastguard Worker   unsigned int out;
80*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetUIntFromJson(in_sn, &out));
81*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(99U, out);
82*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetUIntFromJson(in_n, &out));
83*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(12U, out);
84*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetUIntFromJson(in_u, &out));
85*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(34U, out);
86*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetUIntFromJson(in_b, &out));
87*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1U, out);
88*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetUIntFromJson(big_u, &out));
89*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(0xFFFFFFFFU, out);
90*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetUIntFromJson(in_s, &out));
91*d9f75844SAndroid Build Coastguard Worker   // TODO(bugs.webrtc.org/9804): Fail reading negative strings.
92*d9f75844SAndroid Build Coastguard Worker   // EXPECT_FALSE(GetUIntFromJson(in_si, &out));
93*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetUIntFromJson(in_i, &out));
94*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetUIntFromJson(big_sn, &out));
95*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetUIntFromJson(big_si, &out));
96*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetUIntFromJson(bad_a, &out));
97*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetUIntFromJson(bad_o, &out));
98*d9f75844SAndroid Build Coastguard Worker }
99*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,GetBool)100*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, GetBool) {
101*d9f75844SAndroid Build Coastguard Worker   bool out;
102*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetBoolFromJson(in_sb, &out));
103*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(true, out);
104*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetBoolFromJson(in_n, &out));
105*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(true, out);
106*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetBoolFromJson(in_i, &out));
107*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(true, out);
108*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetBoolFromJson(in_u, &out));
109*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(true, out);
110*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetBoolFromJson(in_b, &out));
111*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(true, out);
112*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetBoolFromJson(big_u, &out));
113*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(true, out);
114*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetBoolFromJson(in_s, &out));
115*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetBoolFromJson(in_sn, &out));
116*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetBoolFromJson(in_si, &out));
117*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetBoolFromJson(big_sn, &out));
118*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetBoolFromJson(big_si, &out));
119*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetBoolFromJson(bad_a, &out));
120*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetBoolFromJson(bad_o, &out));
121*d9f75844SAndroid Build Coastguard Worker }
122*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,GetDouble)123*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, GetDouble) {
124*d9f75844SAndroid Build Coastguard Worker   double out;
125*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetDoubleFromJson(in_sn, &out));
126*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(99, out);
127*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetDoubleFromJson(in_si, &out));
128*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(-99, out);
129*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetDoubleFromJson(in_sd, &out));
130*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1.2, out);
131*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetDoubleFromJson(in_n, &out));
132*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(12, out);
133*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetDoubleFromJson(in_i, &out));
134*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(-12, out);
135*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetDoubleFromJson(in_u, &out));
136*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(34, out);
137*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetDoubleFromJson(in_b, &out));
138*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1, out);
139*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetDoubleFromJson(in_d, &out));
140*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1.2, out);
141*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetDoubleFromJson(in_s, &out));
142*d9f75844SAndroid Build Coastguard Worker }
143*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,GetFromArray)144*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, GetFromArray) {
145*d9f75844SAndroid Build Coastguard Worker   Json::Value a, out;
146*d9f75844SAndroid Build Coastguard Worker   a.append(in_s);
147*d9f75844SAndroid Build Coastguard Worker   a.append(in_i);
148*d9f75844SAndroid Build Coastguard Worker   a.append(in_u);
149*d9f75844SAndroid Build Coastguard Worker   a.append(in_b);
150*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetValueFromJsonArray(a, 0, &out));
151*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetValueFromJsonArray(a, 3, &out));
152*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetValueFromJsonArray(a, 99, &out));
153*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetValueFromJsonArray(a, 0xFFFFFFFF, &out));
154*d9f75844SAndroid Build Coastguard Worker }
155*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,GetFromObject)156*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, GetFromObject) {
157*d9f75844SAndroid Build Coastguard Worker   Json::Value o, out;
158*d9f75844SAndroid Build Coastguard Worker   o["string"] = in_s;
159*d9f75844SAndroid Build Coastguard Worker   o["int"] = in_i;
160*d9f75844SAndroid Build Coastguard Worker   o["uint"] = in_u;
161*d9f75844SAndroid Build Coastguard Worker   o["bool"] = in_b;
162*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetValueFromJsonObject(o, "int", &out));
163*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(GetValueFromJsonObject(o, "bool", &out));
164*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetValueFromJsonObject(o, "foo", &out));
165*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(GetValueFromJsonObject(o, "", &out));
166*d9f75844SAndroid Build Coastguard Worker }
167*d9f75844SAndroid Build Coastguard Worker 
168*d9f75844SAndroid Build Coastguard Worker namespace {
169*d9f75844SAndroid Build Coastguard Worker template <typename T>
VecOf3(const T & a,const T & b,const T & c)170*d9f75844SAndroid Build Coastguard Worker std::vector<T> VecOf3(const T& a, const T& b, const T& c) {
171*d9f75844SAndroid Build Coastguard Worker   std::vector<T> in;
172*d9f75844SAndroid Build Coastguard Worker   in.push_back(a);
173*d9f75844SAndroid Build Coastguard Worker   in.push_back(b);
174*d9f75844SAndroid Build Coastguard Worker   in.push_back(c);
175*d9f75844SAndroid Build Coastguard Worker   return in;
176*d9f75844SAndroid Build Coastguard Worker }
177*d9f75844SAndroid Build Coastguard Worker template <typename T>
JsonVecOf3(const T & a,const T & b,const T & c)178*d9f75844SAndroid Build Coastguard Worker Json::Value JsonVecOf3(const T& a, const T& b, const T& c) {
179*d9f75844SAndroid Build Coastguard Worker   Json::Value in(Json::arrayValue);
180*d9f75844SAndroid Build Coastguard Worker   in.append(a);
181*d9f75844SAndroid Build Coastguard Worker   in.append(b);
182*d9f75844SAndroid Build Coastguard Worker   in.append(c);
183*d9f75844SAndroid Build Coastguard Worker   return in;
184*d9f75844SAndroid Build Coastguard Worker }
185*d9f75844SAndroid Build Coastguard Worker }  // unnamed namespace
186*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,ValueVectorToFromArray)187*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, ValueVectorToFromArray) {
188*d9f75844SAndroid Build Coastguard Worker   std::vector<Json::Value> in = VecOf3<Json::Value>("a", "b", "c");
189*d9f75844SAndroid Build Coastguard Worker   Json::Value out = ValueVectorToJsonArray(in);
190*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(in.size(), out.size());
191*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
192*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i].asString(), out[i].asString());
193*d9f75844SAndroid Build Coastguard Worker   }
194*d9f75844SAndroid Build Coastguard Worker   Json::Value inj = JsonVecOf3<Json::Value>("a", "b", "c");
195*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(inj, out);
196*d9f75844SAndroid Build Coastguard Worker   std::vector<Json::Value> outj;
197*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(JsonArrayToValueVector(inj, &outj));
198*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
199*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], outj[i]);
200*d9f75844SAndroid Build Coastguard Worker   }
201*d9f75844SAndroid Build Coastguard Worker }
202*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,IntVectorToFromArray)203*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, IntVectorToFromArray) {
204*d9f75844SAndroid Build Coastguard Worker   std::vector<int> in = VecOf3<int>(1, 2, 3);
205*d9f75844SAndroid Build Coastguard Worker   Json::Value out = IntVectorToJsonArray(in);
206*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(in.size(), out.size());
207*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
208*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], out[i].asInt());
209*d9f75844SAndroid Build Coastguard Worker   }
210*d9f75844SAndroid Build Coastguard Worker   Json::Value inj = JsonVecOf3<int>(1, 2, 3);
211*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(inj, out);
212*d9f75844SAndroid Build Coastguard Worker   std::vector<int> outj;
213*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(JsonArrayToIntVector(inj, &outj));
214*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
215*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], outj[i]);
216*d9f75844SAndroid Build Coastguard Worker   }
217*d9f75844SAndroid Build Coastguard Worker }
218*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,UIntVectorToFromArray)219*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, UIntVectorToFromArray) {
220*d9f75844SAndroid Build Coastguard Worker   std::vector<unsigned int> in = VecOf3<unsigned int>(1, 2, 3);
221*d9f75844SAndroid Build Coastguard Worker   Json::Value out = UIntVectorToJsonArray(in);
222*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(in.size(), out.size());
223*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
224*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], out[i].asUInt());
225*d9f75844SAndroid Build Coastguard Worker   }
226*d9f75844SAndroid Build Coastguard Worker   Json::Value inj = JsonVecOf3<unsigned int>(1, 2, 3);
227*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(inj, out);
228*d9f75844SAndroid Build Coastguard Worker   std::vector<unsigned int> outj;
229*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(JsonArrayToUIntVector(inj, &outj));
230*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
231*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], outj[i]);
232*d9f75844SAndroid Build Coastguard Worker   }
233*d9f75844SAndroid Build Coastguard Worker }
234*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,StringVectorToFromArray)235*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, StringVectorToFromArray) {
236*d9f75844SAndroid Build Coastguard Worker   std::vector<std::string> in = VecOf3<std::string>("a", "b", "c");
237*d9f75844SAndroid Build Coastguard Worker   Json::Value out = StringVectorToJsonArray(in);
238*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(in.size(), out.size());
239*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
240*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], out[i].asString());
241*d9f75844SAndroid Build Coastguard Worker   }
242*d9f75844SAndroid Build Coastguard Worker   Json::Value inj = JsonVecOf3<std::string>("a", "b", "c");
243*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(inj, out);
244*d9f75844SAndroid Build Coastguard Worker   std::vector<std::string> outj;
245*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(JsonArrayToStringVector(inj, &outj));
246*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
247*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], outj[i]);
248*d9f75844SAndroid Build Coastguard Worker   }
249*d9f75844SAndroid Build Coastguard Worker }
250*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,BoolVectorToFromArray)251*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, BoolVectorToFromArray) {
252*d9f75844SAndroid Build Coastguard Worker   std::vector<bool> in = VecOf3<bool>(false, true, false);
253*d9f75844SAndroid Build Coastguard Worker   Json::Value out = BoolVectorToJsonArray(in);
254*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(in.size(), out.size());
255*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
256*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], out[i].asBool());
257*d9f75844SAndroid Build Coastguard Worker   }
258*d9f75844SAndroid Build Coastguard Worker   Json::Value inj = JsonVecOf3<bool>(false, true, false);
259*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(inj, out);
260*d9f75844SAndroid Build Coastguard Worker   std::vector<bool> outj;
261*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(JsonArrayToBoolVector(inj, &outj));
262*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
263*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], outj[i]);
264*d9f75844SAndroid Build Coastguard Worker   }
265*d9f75844SAndroid Build Coastguard Worker }
266*d9f75844SAndroid Build Coastguard Worker 
TEST(JsonTest,DoubleVectorToFromArray)267*d9f75844SAndroid Build Coastguard Worker TEST(JsonTest, DoubleVectorToFromArray) {
268*d9f75844SAndroid Build Coastguard Worker   std::vector<double> in = VecOf3<double>(1.0, 2.0, 3.0);
269*d9f75844SAndroid Build Coastguard Worker   Json::Value out = DoubleVectorToJsonArray(in);
270*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(in.size(), out.size());
271*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
272*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], out[i].asDouble());
273*d9f75844SAndroid Build Coastguard Worker   }
274*d9f75844SAndroid Build Coastguard Worker   Json::Value inj = JsonVecOf3<double>(1.0, 2.0, 3.0);
275*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(inj, out);
276*d9f75844SAndroid Build Coastguard Worker   std::vector<double> outj;
277*d9f75844SAndroid Build Coastguard Worker   EXPECT_TRUE(JsonArrayToDoubleVector(inj, &outj));
278*d9f75844SAndroid Build Coastguard Worker   for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
279*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(in[i], outj[i]);
280*d9f75844SAndroid Build Coastguard Worker   }
281*d9f75844SAndroid Build Coastguard Worker }
282*d9f75844SAndroid Build Coastguard Worker 
283*d9f75844SAndroid Build Coastguard Worker }  // namespace rtc
284