tools/profiler/tests/gtest/JSStreamWriterTest.cpp

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:12e4e11f803a
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 #include "gtest/gtest.h"
7
8 #include <sstream>
9 #include "JSStreamWriter.h"
10
11 TEST(JSStreamWriter, NoOutput) {
12 std::stringstream ss;
13 JSStreamWriter b(ss);
14 ASSERT_TRUE(ss.str().compare("") == 0);
15 }
16
17 TEST(JSStreamWriter, EmptyObject) {
18 std::stringstream ss;
19 JSStreamWriter b(ss);
20 b.BeginObject();
21 b.EndObject();
22 ASSERT_TRUE(ss.str().compare("{}") == 0);
23 }
24
25 TEST(JSStreamWriter, OnePropertyObject) {
26 std::stringstream ss;
27 JSStreamWriter b(ss);
28 b.BeginObject();
29 b.Name("a");
30 b.Value(1);
31 b.EndObject();
32 ASSERT_TRUE(ss.str().compare("{\"a\":1}") == 0);
33 }
34
35 TEST(JSStreamWriter, MultiPropertyObject) {
36 std::stringstream ss;
37 JSStreamWriter b(ss);
38 b.BeginObject();
39 b.Name("a");
40 b.Value(1);
41 b.Name("b");
42 b.Value(2);
43 b.EndObject();
44 ASSERT_TRUE(ss.str().compare("{\"a\":1,\"b\":2}") == 0);
45 }
46
47 TEST(JSStreamWriter, OnePropertyArray) {
48 std::stringstream ss;
49 JSStreamWriter b(ss);
50 b.BeginArray();
51 b.Value(1);
52 b.EndArray();
53 ASSERT_TRUE(ss.str().compare("[1]") == 0);
54 }
55
56 TEST(JSStreamWriter, MultiPropertyArray) {
57 std::stringstream ss;
58 JSStreamWriter b(ss);
59 b.BeginArray();
60 b.Value(1);
61 b.Value(2);
62 b.EndArray();
63 ASSERT_TRUE(ss.str().compare("[1,2]") == 0);
64 }
65
66 TEST(JSStreamWriter, NestedObject) {
67 std::stringstream ss;
68 JSStreamWriter b(ss);
69 b.BeginObject();
70 b.Name("a");
71 b.BeginObject();
72 b.Name("b");
73 b.Value(1);
74 b.EndObject();
75 b.EndObject();
76 ASSERT_TRUE(ss.str().compare("{\"a\":{\"b\":1}}") == 0);
77 }
78
79 TEST(JSStreamWriter, NestedObjectInArray) {
80 std::stringstream ss;
81 JSStreamWriter b(ss);
82 b.BeginArray();
83 b.BeginObject();
84 b.Name("a");
85 b.Value(1);
86 b.EndObject();
87 b.EndArray();
88 ASSERT_TRUE(ss.str().compare("[{\"a\":1}]") == 0);
89 }
90
91 TEST(JSStreamWriter, NestedArrayInObject) {
92 std::stringstream ss;
93 JSStreamWriter b(ss);
94 b.BeginObject();
95 b.Name("a");
96 b.BeginArray();
97 b.Value(1);
98 b.EndArray();
99 b.EndObject();
100 ASSERT_TRUE(ss.str().compare("{\"a\":[1]}") == 0);
101 }
102
103 TEST(JSStreamWriter, StingEscaping) {
104 std::stringstream ss;
105 JSStreamWriter b(ss);
106 b.Value("a\"a");
107 ASSERT_TRUE(ss.str().compare("\"a\\\"a\"") == 0);
108
109 std::stringstream ss2;
110 JSStreamWriter b2(ss2);
111 b2.Value("a\na");
112 ASSERT_TRUE(ss2.str().compare("\"a\\u000Aa\"") == 0);
113 }
114
115 TEST(JSStreamWriter, ArrayOfOjects) {
116 std::stringstream ss;
117 JSStreamWriter b(ss);
118 b.BeginArray();
119 b.BeginObject();
120 b.EndObject();
121
122 b.BeginObject();
123 b.EndObject();
124 b.EndArray();
125 ASSERT_TRUE(ss.str().compare("[{},{}]") == 0);
126 }
127
128 TEST(JSStreamWriter, Complex) {
129 std::stringstream ss;
130 JSStreamWriter b(ss);
131 b.BeginObject();
132 b.Name("a");
133 b.BeginArray();
134 b.Value(1);
135
136 b.BeginObject();
137 b.EndObject();
138
139 b.BeginObject();
140 b.Name("b");
141 b.Value("c");
142 b.EndObject();
143 b.EndArray();
144
145 b.Name("b");
146 b.BeginArray();
147 b.BeginArray();
148 b.EndArray();
149 b.EndArray();
150 b.EndObject();
151 ASSERT_TRUE(ss.str().compare("{\"a\":[1,{},{\"b\":\"c\"}],\"b\":[[]]}") == 0);
152 }
153
154 TEST(JSStreamWriter, Complex2) {
155 std::stringstream ss;
156 JSStreamWriter b(ss);
157 b.BeginObject();
158 b.Name("a");
159 b.BeginArray();
160 b.BeginObject();
161 b.Name("b");
162 b.Value("c");
163 b.Name("d");
164 b.BeginArray();
165 b.BeginObject();
166 b.Name("e");
167 b.BeginArray();
168 b.BeginObject();
169 b.Name("f");
170 b.Value("g");
171 b.EndObject();
172 b.BeginObject();
173 b.Name("h");
174 b.Value("i");
175 b.EndObject();
176 b.EndArray();
177 b.EndObject();
178 b.EndArray();
179 b.EndObject();
180 b.EndArray();
181 b.EndObject();
182 ASSERT_TRUE(ss.str().compare("{\"a\":[{\"b\":\"c\",\"d\":[{\"e\":[{\"f\":\"g\"},{\"h\":\"i\"}]}]}]}")
183 }

mercurial