1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "testing/gtest/include/gtest/gtest.h"
6 #include "base/json_writer.h"
7 #include "base/values.h"
9 TEST(JSONWriterTest
, Writing
) {
11 Value
* root
= Value::CreateNullValue();
12 std::string output_js
;
13 JSONWriter::Write(root
, false, &output_js
);
14 ASSERT_EQ("null", output_js
);
18 root
= new DictionaryValue
;
19 JSONWriter::Write(root
, false, &output_js
);
20 ASSERT_EQ("{}", output_js
);
25 JSONWriter::Write(root
, false, &output_js
);
26 ASSERT_EQ("[]", output_js
);
29 // Test Real values should always have a decimal or an 'e'.
30 root
= Value::CreateRealValue(1.0);
31 JSONWriter::Write(root
, false, &output_js
);
32 ASSERT_EQ("1.0", output_js
);
35 // Writer unittests like empty list/dict nesting,
36 // list list nesting, etc.
37 DictionaryValue root_dict
;
38 ListValue
* list
= new ListValue
;
39 root_dict
.Set(L
"list", list
);
40 DictionaryValue
* inner_dict
= new DictionaryValue
;
41 list
->Append(inner_dict
);
42 inner_dict
->SetInteger(L
"inner int", 10);
43 ListValue
* inner_list
= new ListValue
;
44 list
->Append(inner_list
);
45 list
->Append(Value::CreateBooleanValue(true));
47 JSONWriter::Write(&root_dict
, false, &output_js
);
48 ASSERT_EQ("{\"list\":[{\"inner int\":10},[],true]}", output_js
);
49 JSONWriter::Write(&root_dict
, true, &output_js
);
52 " \"inner int\": 10\r\n"