• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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.
4 
5 #include "chrome/browser/sync/js_arg_list.h"
6 
7 #include "base/memory/scoped_ptr.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 namespace browser_sync {
11 namespace {
12 
13 class JsArgListTest : public testing::Test {};
14 
TEST_F(JsArgListTest,EmptyList)15 TEST_F(JsArgListTest, EmptyList) {
16   JsArgList arg_list;
17   EXPECT_TRUE(arg_list.Get().empty());
18 }
19 
TEST_F(JsArgListTest,FromList)20 TEST_F(JsArgListTest, FromList) {
21   scoped_ptr<ListValue> list(new ListValue());
22   list->Append(Value::CreateBooleanValue(false));
23   list->Append(Value::CreateIntegerValue(5));
24   DictionaryValue* dict = new DictionaryValue();
25   list->Append(dict);
26   dict->SetString("foo", "bar");
27   dict->Set("baz", new ListValue());
28 
29   JsArgList arg_list(*list);
30 
31   // Make sure arg_list takes a deep copy.
32   scoped_ptr<ListValue> list_copy(list->DeepCopy());
33   list.reset();
34   EXPECT_TRUE(arg_list.Get().Equals(list_copy.get()));
35 }
36 
TEST_F(JsArgListTest,FromVector)37 TEST_F(JsArgListTest, FromVector) {
38   FundamentalValue bool_value(false);
39   FundamentalValue int_value(5);
40   DictionaryValue dict;
41   dict.SetString("foo", "bar");
42   dict.Set("baz", new ListValue());
43 
44   std::vector<const Value*> vec;
45   vec.push_back(&bool_value);
46   vec.push_back(&int_value);
47   vec.push_back(&dict);
48 
49   JsArgList arg_list(vec);
50 
51   ListValue list;
52   list.Append(bool_value.DeepCopy());
53   list.Append(int_value.DeepCopy());
54   list.Append(dict.DeepCopy());
55 
56   // Make sure arg_list takes a deep copy.
57   vec.clear();
58   dict.SetString("baz", "foo");
59   EXPECT_TRUE(arg_list.Get().Equals(&list));
60 }
61 
62 }  // namespace
63 }  // namespace browser_sync
64