Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: runtime/vm/json_test.cc

Issue 23875015: - Base JSON stream printing on stack objects. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/json_stream.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/assert.h" 5 #include "platform/assert.h"
6 #include "platform/json.h" 6 #include "platform/json.h"
7 #include "vm/json_stream.h" 7 #include "vm/json_stream.h"
8 #include "vm/unit_test.h" 8 #include "vm/unit_test.h"
9 9
10 namespace dart { 10 namespace dart {
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 132
133 JSONReader r(w.buf()); 133 JSONReader r(w.buf());
134 bool found = r.Seek("command"); 134 bool found = r.Seek("command");
135 EXPECT(found); 135 EXPECT(found);
136 EXPECT_EQ(r.Type(), JSONReader::kString); 136 EXPECT_EQ(r.Type(), JSONReader::kString);
137 EXPECT(r.IsStringLiteral("stopIt")); 137 EXPECT(r.IsStringLiteral("stopIt"));
138 } 138 }
139 139
140 140
141 TEST_CASE(JSON_JSONStream_Primitives) { 141 TEST_CASE(JSON_JSONStream_Primitives) {
142 TextBuffer tb(256); 142 {
143 JSONStream js(&tb); 143 JSONStream js;
144 144 {
145 js.OpenObject(); 145 JSONObject jsobj(&js);
146 js.CloseObject(); 146 }
147 147 EXPECT_STREQ("{}", js.ToCString());
148 EXPECT_STREQ("{}", tb.buf()); 148 }
149 149 {
150 js.Clear(); 150 JSONStream js;
151 js.OpenArray(); 151 {
152 js.CloseArray(); 152 JSONArray jsarr(&js);
153 EXPECT_STREQ("[]", tb.buf()); 153 }
154 154 EXPECT_STREQ("[]", js.ToCString());
155 js.Clear(); 155 }
156 js.PrintValueBool(true); 156 {
157 EXPECT_STREQ("true", tb.buf()); 157 JSONStream js;
158 158 {
159 js.Clear(); 159 JSONArray jsarr(&js);
160 js.PrintValueBool(false); 160 jsarr.AddValue(true);
161 EXPECT_STREQ("false", tb.buf()); 161 }
162 162 EXPECT_STREQ("[true]", js.ToCString());
163 js.Clear(); 163 }
164 js.PrintValue(static_cast<intptr_t>(4)); 164 {
165 EXPECT_STREQ("4", tb.buf()); 165 JSONStream js;
166 166 {
167 js.Clear(); 167 JSONArray jsarr(&js);
168 js.PrintValue(1.0); 168 jsarr.AddValue(false);
169 EXPECT_STREQ("1.000000", tb.buf()); 169 }
170 170 EXPECT_STREQ("[false]", js.ToCString());
171 js.Clear(); 171 }
172 js.PrintValue("hello"); 172 {
173 EXPECT_STREQ("\"hello\"", tb.buf()); 173 JSONStream js;
174 {
175 JSONArray jsarr(&js);
176 jsarr.AddValue(static_cast<intptr_t>(4));
177 }
178 EXPECT_STREQ("[4]", js.ToCString());
179 }
180 {
181 JSONStream js;
182 {
183 JSONArray jsarr(&js);
184 jsarr.AddValue(1.0);
185 }
186 EXPECT_STREQ("[1.000000]", js.ToCString());
187 }
188 {
189 JSONStream js;
190 {
191 JSONArray jsarr(&js);
192 jsarr.AddValue("hello");
193 }
194 EXPECT_STREQ("[\"hello\"]", js.ToCString());
195 }
196 {
197 JSONStream js;
198 {
199 JSONArray jsarr(&js);
200 jsarr.AddValueF("h%s", "elo");
201 }
202 EXPECT_STREQ("[\"helo\"]", js.ToCString());
203 }
174 } 204 }
175 205
176 206
177 TEST_CASE(JSON_JSONStream_Array) { 207 TEST_CASE(JSON_JSONStream_Array) {
178 TextBuffer tb(256); 208 JSONStream js;
179 JSONStream js(&tb); 209 {
180 js.Clear(); 210 JSONArray jsarr(&js);
181 js.OpenArray(); 211 jsarr.AddValue(true);
182 js.PrintValueBool(true); 212 jsarr.AddValue(false);
183 js.PrintValueBool(false); 213 }
184 js.CloseArray(); 214 EXPECT_STREQ("[true,false]", js.ToCString());
185 EXPECT_STREQ("[true,false]", tb.buf());
186 } 215 }
187 216
188 217
189 TEST_CASE(JSON_JSONStream_Object) { 218 TEST_CASE(JSON_JSONStream_Object) {
190 TextBuffer tb(256); 219 JSONStream js;
191 JSONStream js(&tb); 220 {
192 js.Clear(); 221 JSONObject jsobj(&js);
193 js.OpenObject(); 222 jsobj.AddProperty("key1", "a");
194 js.PrintProperty("key1", "a"); 223 jsobj.AddProperty("key2", "b");
195 js.PrintProperty("key2", "b"); 224 }
196 js.CloseObject(); 225 EXPECT_STREQ("{\"key1\":\"a\",\"key2\":\"b\"}", js.ToCString());
197 EXPECT_STREQ("{\"key1\":\"a\",\"key2\":\"b\"}", tb.buf());
198 } 226 }
199 227
200 TEST_CASE(JSON_JSONStream_NestedObject) { 228 TEST_CASE(JSON_JSONStream_NestedObject) {
201 TextBuffer tb(256); 229 JSONStream js;
202 JSONStream js(&tb); 230 {
203 js.OpenObject(); 231 JSONObject jsobj(&js);
204 js.OpenObject("key"); 232 JSONObject jsobj1(jsobj, "key");
205 js.PrintProperty("key1", "d"); 233 jsobj1.AddProperty("key1", "d");
206 js.CloseObject(); 234 }
207 js.CloseObject(); 235 EXPECT_STREQ("{\"key\":{\"key1\":\"d\"}}", js.ToCString());
208 EXPECT_STREQ("{\"key\":{\"key1\":\"d\"}}", tb.buf());
209 } 236 }
210 237
211 238
212 TEST_CASE(JSON_JSONStream_ObjectArray) { 239 TEST_CASE(JSON_JSONStream_ObjectArray) {
213 TextBuffer tb(256); 240 JSONStream js;
214 JSONStream js(&tb); 241 {
215 js.OpenArray(); 242 JSONArray jsarr(&js);
216 js.OpenObject(); 243 {
217 js.PrintProperty("key", "e"); 244 JSONObject jsobj(jsarr);
218 js.CloseObject(); 245 jsobj.AddProperty("key", "e");
219 js.OpenObject(); 246 }
220 js.PrintProperty("yek", "f"); 247 {
221 js.CloseObject(); 248 JSONObject jsobj(jsarr);
222 js.CloseArray(); 249 jsobj.AddProperty("yek", "f");
223 EXPECT_STREQ("[{\"key\":\"e\"},{\"yek\":\"f\"}]", tb.buf()); 250 }
251 }
252 EXPECT_STREQ("[{\"key\":\"e\"},{\"yek\":\"f\"}]", js.ToCString());
224 } 253 }
225 254
226 255
227 TEST_CASE(JSON_JSONStream_ArrayArray) { 256 TEST_CASE(JSON_JSONStream_ArrayArray) {
228 TextBuffer tb(256); 257 JSONStream js;
229 JSONStream js(&tb); 258 {
230 js.OpenArray(); 259 JSONArray jsarr(&js);
231 js.OpenArray(); 260 {
232 js.PrintValue((intptr_t)4); 261 JSONArray jsarr1(jsarr);
233 js.CloseArray(); 262 jsarr1.AddValue(static_cast<intptr_t>(4));
234 js.OpenArray(); 263 }
235 js.PrintValueBool(false); 264 {
236 js.CloseArray(); 265 JSONArray jsarr1(jsarr);
237 js.CloseArray(); 266 jsarr1.AddValue(false);
238 EXPECT_STREQ("[[4],[false]]", tb.buf()); 267 }
268 }
269 EXPECT_STREQ("[[4],[false]]", js.ToCString());
239 } 270 }
240 271
241 272
242 TEST_CASE(JSON_JSONStream_Printf) { 273 TEST_CASE(JSON_JSONStream_Printf) {
243 TextBuffer tb(256); 274 JSONStream js;
244 JSONStream js(&tb); 275 {
245 js.OpenArray(); 276 JSONArray jsarr(&js);
246 js.PrintfValue("%d %s", 2, "hello"); 277 jsarr.AddValueF("%d %s", 2, "hello");
247 js.CloseArray(); 278 }
248 EXPECT_STREQ("[\"2 hello\"]", tb.buf()); 279 EXPECT_STREQ("[\"2 hello\"]", js.ToCString());
249 } 280 }
250 281
251 282
252 TEST_CASE(JSON_JSONStream_ObjectPrintf) { 283 TEST_CASE(JSON_JSONStream_ObjectPrintf) {
253 TextBuffer tb(256); 284 JSONStream js;
254 JSONStream js(&tb); 285 {
255 js.OpenObject(); 286 JSONObject jsobj(&js);
256 js.PrintfProperty("key", "%d %s", 2, "hello"); 287 jsobj.AddPropertyF("key", "%d %s", 2, "hello");
257 js.CloseObject(); 288 }
258 EXPECT_STREQ("{\"key\":\"2 hello\"}", tb.buf()); 289 EXPECT_STREQ("{\"key\":\"2 hello\"}", js.ToCString());
259 } 290 }
260 291
261 292
262 TEST_CASE(JSON_JSONStream_DartObject) { 293 TEST_CASE(JSON_JSONStream_DartObject) {
263 TextBuffer tb(256); 294 JSONStream js;
264 JSONStream js(&tb); 295 {
265 js.OpenArray(); 296 JSONArray jsarr(&js);
266 js.PrintValue(Object::Handle(Object::null())); 297 jsarr.AddValue(Object::Handle(Object::null()));
267 js.OpenObject(); 298 JSONObject jsobj(jsarr);
268 js.PrintProperty("object_key", Object::Handle(Object::null())); 299 jsobj.AddProperty("object_key", Object::Handle(Object::null()));
269 js.CloseArray(); 300 }
270 EXPECT_STREQ("[{\"type\":\"null\"},{\"object_key\":{\"type\":\"null\"}]", 301 EXPECT_STREQ("[{\"type\":\"null\"},{\"object_key\":{\"type\":\"null\"}}]",
271 tb.buf()); 302 js.ToCString());
272 } 303 }
273 304
274 TEST_CASE(JSON_JSONStream_EscapedString) { 305 TEST_CASE(JSON_JSONStream_EscapedString) {
275 TextBuffer tb(256); 306 JSONStream js;
276 JSONStream js(&tb); 307 {
277 js.PrintValue("Hel\"\"lo\r\n\t"); 308 JSONArray jsarr(&js);
278 EXPECT_STREQ("\"Hel\\\"\\\"lo\\r\\n\\t\"", tb.buf()); 309 jsarr.AddValue("Hel\"\"lo\r\n\t");
310 }
311 EXPECT_STREQ("[\"Hel\\\"\\\"lo\\r\\n\\t\"]", js.ToCString());
279 } 312 }
280 313
281 314
282 } // namespace dart 315 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/json_stream.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698