147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org/*
247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  Copyright 2009 The WebRTC Project Authors. All rights reserved.
347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *
447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  Use of this source code is governed by a BSD-style license
547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  that can be found in the LICENSE file in the root of the source
647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  tree. An additional intellectual property rights grant can be found
747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  in the file PATENTS.  All contributing project authors may
847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org */
1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <vector>
1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/gunit.h"
1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/json.h"
1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_s("foo");
1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_sn("99");
1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_si("-99");
1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_sb("true");
1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_sd("1.2");
2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_n(12);
2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_i(-12);
2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_u(34U);
2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_b(true);
2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value in_d(1.2);
2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value big_sn("12345678901234567890");
2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value big_si("-12345678901234567890");
2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value big_u(0xFFFFFFFF);
2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value bad_a(Json::arrayValue);
2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstatic Json::Value bad_o(Json::objectValue);
3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, GetString) {
3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::string out;
3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetStringFromJson(in_s, &out));
3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ("foo", out);
3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetStringFromJson(in_sn, &out));
3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ("99", out);
3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetStringFromJson(in_si, &out));
3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ("-99", out);
3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetStringFromJson(in_i, &out));
4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ("-12", out);
4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetStringFromJson(in_n, &out));
4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ("12", out);
4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetStringFromJson(in_u, &out));
4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ("34", out);
4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetStringFromJson(in_b, &out));
4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ("true", out);
4747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  // Not supported here yet.
4847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetStringFromJson(bad_a, &out));
4947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetStringFromJson(bad_o, &out));
5047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
5147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
5247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, GetInt) {
5347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  int out;
5447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetIntFromJson(in_sn, &out));
5547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(99, out);
5647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetIntFromJson(in_si, &out));
5747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(-99, out);
5847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetIntFromJson(in_n, &out));
5947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(12, out);
6047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetIntFromJson(in_i, &out));
6147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(-12, out);
6247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetIntFromJson(in_u, &out));
6347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(34, out);
6447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetIntFromJson(in_b, &out));
6547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(1, out);
6647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetIntFromJson(in_s, &out));
6747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetIntFromJson(big_sn, &out));
6847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetIntFromJson(big_si, &out));
6947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetIntFromJson(big_u, &out));
7047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetIntFromJson(bad_a, &out));
7147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetIntFromJson(bad_o, &out));
7247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
7347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
7447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, GetUInt) {
7547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  unsigned int out;
7647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetUIntFromJson(in_sn, &out));
7747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(99U, out);
7847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetUIntFromJson(in_n, &out));
7947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(12U, out);
8047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetUIntFromJson(in_u, &out));
8147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(34U, out);
8247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetUIntFromJson(in_b, &out));
8347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(1U, out);
8447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetUIntFromJson(big_u, &out));
8547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0xFFFFFFFFU, out);
8647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetUIntFromJson(in_s, &out));
8747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  // TODO: Fail reading negative strings.
8847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  // EXPECT_FALSE(GetUIntFromJson(in_si, &out));
8947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetUIntFromJson(in_i, &out));
9047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetUIntFromJson(big_sn, &out));
9147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetUIntFromJson(big_si, &out));
9247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetUIntFromJson(bad_a, &out));
9347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetUIntFromJson(bad_o, &out));
9447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
9547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
9647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, GetBool) {
9747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  bool out;
9847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetBoolFromJson(in_sb, &out));
9947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(true, out);
10047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetBoolFromJson(in_n, &out));
10147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(true, out);
10247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetBoolFromJson(in_i, &out));
10347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(true, out);
10447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetBoolFromJson(in_u, &out));
10547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(true, out);
10647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetBoolFromJson(in_b, &out));
10747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(true, out);
10847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetBoolFromJson(big_u, &out));
10947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(true, out);
11047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetBoolFromJson(in_s, &out));
11147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetBoolFromJson(in_sn, &out));
11247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetBoolFromJson(in_si, &out));
11347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetBoolFromJson(big_sn, &out));
11447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetBoolFromJson(big_si, &out));
11547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetBoolFromJson(bad_a, &out));
11647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetBoolFromJson(bad_o, &out));
11747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
11847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
11947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, GetDouble) {
12047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  double out;
12147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetDoubleFromJson(in_sn, &out));
12247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(99, out);
12347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetDoubleFromJson(in_si, &out));
12447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(-99, out);
12547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetDoubleFromJson(in_sd, &out));
12647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(1.2, out);
12747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetDoubleFromJson(in_n, &out));
12847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(12, out);
12947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetDoubleFromJson(in_i, &out));
13047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(-12, out);
13147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetDoubleFromJson(in_u, &out));
13247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(34, out);
13347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetDoubleFromJson(in_b, &out));
13447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(1, out);
13547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetDoubleFromJson(in_d, &out));
13647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(1.2, out);
13747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetDoubleFromJson(in_s, &out));
13847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
13947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
14047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, GetFromArray) {
14147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value a, out;
14247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  a.append(in_s);
14347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  a.append(in_i);
14447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  a.append(in_u);
14547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  a.append(in_b);
14647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetValueFromJsonArray(a, 0, &out));
14747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetValueFromJsonArray(a, 3, &out));
14847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetValueFromJsonArray(a, 99, &out));
14947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetValueFromJsonArray(a, 0xFFFFFFFF, &out));
15047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
15147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
15247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, GetFromObject) {
15347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value o, out;
15447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  o["string"] = in_s;
15547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  o["int"] = in_i;
15647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  o["uint"] = in_u;
15747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  o["bool"] = in_b;
15847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetValueFromJsonObject(o, "int", &out));
15947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(GetValueFromJsonObject(o, "bool", &out));
16047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetValueFromJsonObject(o, "foo", &out));
16147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_FALSE(GetValueFromJsonObject(o, "", &out));
16247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
16347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
16447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace {
16547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgtemplate <typename T>
16647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstd::vector<T> VecOf3(const T& a, const T& b, const T& c) {
16747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<T> in;
16847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  in.push_back(a);
16947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  in.push_back(b);
17047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  in.push_back(c);
17147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  return in;
17247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
17347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgtemplate <typename T>
17447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgJson::Value JsonVecOf3(const T& a, const T& b, const T& c) {
17547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value in(Json::arrayValue);
17647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  in.append(a);
17747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  in.append(b);
17847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  in.append(c);
17947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  return in;
18047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
18147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}  // unnamed namespace
18247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
18347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, ValueVectorToFromArray) {
18447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<Json::Value> in = VecOf3<Json::Value>("a", "b", "c");
18547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value out = ValueVectorToJsonArray(in);
18647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(in.size(), out.size());
18747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
18847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i].asString(), out[i].asString());
18947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
19047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value inj = JsonVecOf3<Json::Value>("a", "b", "c");
19147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(inj, out);
19247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<Json::Value> outj;
19347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(JsonArrayToValueVector(inj, &outj));
19447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
19547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], outj[i]);
19647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
19747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
19847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
19947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, IntVectorToFromArray) {
20047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<int> in = VecOf3<int>(1, 2, 3);
20147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value out = IntVectorToJsonArray(in);
20247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(in.size(), out.size());
20347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
20447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], out[i].asInt());
20547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
20647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value inj = JsonVecOf3<int>(1, 2, 3);
20747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(inj, out);
20847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<int> outj;
20947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(JsonArrayToIntVector(inj, &outj));
21047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
21147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], outj[i]);
21247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
21347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
21447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
21547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, UIntVectorToFromArray) {
21647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<unsigned int> in = VecOf3<unsigned int>(1, 2, 3);
21747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value out = UIntVectorToJsonArray(in);
21847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(in.size(), out.size());
21947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
22047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], out[i].asUInt());
22147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
22247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value inj = JsonVecOf3<unsigned int>(1, 2, 3);
22347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(inj, out);
22447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<unsigned int> outj;
22547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(JsonArrayToUIntVector(inj, &outj));
22647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
22747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], outj[i]);
22847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
22947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
23047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
23147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, StringVectorToFromArray) {
23247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<std::string> in = VecOf3<std::string>("a", "b", "c");
23347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value out = StringVectorToJsonArray(in);
23447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(in.size(), out.size());
23547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
23647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], out[i].asString());
23747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
23847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value inj = JsonVecOf3<std::string>("a", "b", "c");
23947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(inj, out);
24047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<std::string> outj;
24147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(JsonArrayToStringVector(inj, &outj));
24247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
24347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], outj[i]);
24447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
24547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
24647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
24747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, BoolVectorToFromArray) {
24847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<bool> in = VecOf3<bool>(false, true, false);
24947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value out = BoolVectorToJsonArray(in);
25047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(in.size(), out.size());
25147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
25247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], out[i].asBool());
25347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
25447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value inj = JsonVecOf3<bool>(false, true, false);
25547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(inj, out);
25647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<bool> outj;
25747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(JsonArrayToBoolVector(inj, &outj));
25847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
25947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], outj[i]);
26047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
26147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
26247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
26347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(JsonTest, DoubleVectorToFromArray) {
26447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<double> in = VecOf3<double>(1.0, 2.0, 3.0);
26547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value out = DoubleVectorToJsonArray(in);
26647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(in.size(), out.size());
26747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); ++i) {
26847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], out[i].asDouble());
26947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
27047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Json::Value inj = JsonVecOf3<double>(1.0, 2.0, 3.0);
27147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(inj, out);
27247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  std::vector<double> outj;
27347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_TRUE(JsonArrayToDoubleVector(inj, &outj));
27447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  for (Json::Value::ArrayIndex i = 0; i < in.size(); i++) {
27547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org    EXPECT_EQ(in[i], outj[i]);
27647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  }
27747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
278