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

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_operations_unittest.cc

Issue 10920091: Move Drive API files to google_apis directory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reflect comments Created 8 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
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 "base/memory/scoped_ptr.h"
6 #include "base/message_loop.h"
7 #include "base/values.h"
8 #include "chrome/browser/chromeos/gdata/gdata_operations.h"
9 #include "chrome/browser/chromeos/gdata/gdata_test_util.h"
10 #include "chrome/browser/chromeos/gdata/operation_runner.h"
11 #include "chrome/test/base/testing_profile.h"
12 #include "content/public/browser/browser_thread.h"
13 #include "content/public/test/test_browser_thread.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 namespace gdata {
17
18 namespace {
19
20 class JsonParseTestGetDataOperation : public GetDataOperation {
21 public:
22 JsonParseTestGetDataOperation(OperationRegistry* registry,
23 const GetDataCallback& callback)
24 : GetDataOperation(registry, callback) {
25 }
26
27 virtual ~JsonParseTestGetDataOperation() {
28 }
29
30 void NotifyStart() {
31 NotifyStartToOperationRegistry();
32 }
33
34 void NotifySuccess() {
35 NotifySuccessToOperationRegistry();
36 }
37
38 void NotifyFailure() {
39 NotifyFinish(OperationRegistry::OPERATION_FAILED);
40 }
41
42 protected:
43 // GetDataOperation overrides:
44 virtual GURL GetURL() const OVERRIDE {
45 // This method is never called because this test does not fetch json from
46 // network.
47 NOTREACHED();
48 return GURL();
49 }
50 };
51
52 void GetDataOperationParseJsonCallback(GDataErrorCode* error_out,
53 scoped_ptr<base::Value>* value_out,
54 GDataErrorCode error_in,
55 scoped_ptr<base::Value> value_in) {
56 value_out->swap(value_in);
57 *error_out = error_in;
58 }
59
60 } // namespace
61
62 class GDataOperationsTest : public testing::Test {
63 protected:
64 GDataOperationsTest()
65 : ui_thread_(content::BrowserThread::UI, &message_loop_) {
66 }
67
68 virtual void SetUp() OVERRIDE {
69 profile_.reset(new TestingProfile);
70 runner_.reset(new OperationRunner(profile_.get(),
71 std::vector<std::string>()));
72 runner_->Initialize();
73 }
74
75 protected:
76 MessageLoopForUI message_loop_;
77 content::TestBrowserThread ui_thread_;
78 scoped_ptr<TestingProfile> profile_;
79 scoped_ptr<OperationRunner> runner_;
80 };
81
82 TEST_F(GDataOperationsTest, GetDataOperationParseJson) {
83 scoped_ptr<base::Value> value;
84 GDataErrorCode error;
85 gdata::GetDataCallback cb = base::Bind(&GetDataOperationParseJsonCallback,
86 &error,
87 &value);
88 JsonParseTestGetDataOperation* getData =
89 new JsonParseTestGetDataOperation(runner_->operation_registry(), cb);
90 getData->NotifyStart();
91
92 // Parses a valid json string.
93 {
94 std::string valid_json_str =
95 "{"
96 " \"test\": {"
97 " \"foo\": true,"
98 " \"bar\": 3.14,"
99 " \"baz\": \"bat\","
100 " \"moo\": \"cow\""
101 " },"
102 " \"list\": ["
103 " \"a\","
104 " \"b\""
105 " ]"
106 "}";
107
108 getData->ParseResponse(HTTP_SUCCESS, valid_json_str);
109 test_util::RunBlockingPoolTask();
110
111 EXPECT_EQ(HTTP_SUCCESS, error);
112 ASSERT_TRUE(value.get());
113
114 DictionaryValue* root_dict = NULL;
115 ASSERT_TRUE(value->GetAsDictionary(&root_dict));
116
117 DictionaryValue* dict = NULL;
118 ListValue* list = NULL;
119 ASSERT_TRUE(root_dict->GetDictionary("test", &dict));
120 ASSERT_TRUE(root_dict->GetList("list", &list));
121
122 Value* dict_literals[2] = {0};
123 Value* dict_strings[2] = {0};
124 Value* list_values[2] = {0};
125 EXPECT_TRUE(dict->Get("foo", &dict_literals[0]));
126 EXPECT_TRUE(dict->Get("bar", &dict_literals[1]));
127 EXPECT_TRUE(dict->Get("baz", &dict_strings[0]));
128 EXPECT_TRUE(dict->Get("moo", &dict_strings[1]));
129 ASSERT_EQ(2u, list->GetSize());
130 EXPECT_TRUE(list->Get(0, &list_values[0]));
131 EXPECT_TRUE(list->Get(1, &list_values[1]));
132
133 bool b = false;
134 double d = 0;
135 std::string s;
136 EXPECT_TRUE(dict_literals[0]->GetAsBoolean(&b));
137 EXPECT_TRUE(b);
138 EXPECT_TRUE(dict_literals[1]->GetAsDouble(&d));
139 EXPECT_EQ(3.14, d);
140 EXPECT_TRUE(dict_strings[0]->GetAsString(&s));
141 EXPECT_EQ("bat", s);
142 EXPECT_TRUE(dict_strings[1]->GetAsString(&s));
143 EXPECT_EQ("cow", s);
144 EXPECT_TRUE(list_values[0]->GetAsString(&s));
145 EXPECT_EQ("a", s);
146 EXPECT_TRUE(list_values[1]->GetAsString(&s));
147 EXPECT_EQ("b", s);
148 }
149 }
150
151 TEST_F(GDataOperationsTest, GetDataOperationParseInvalidJson) {
152 scoped_ptr<base::Value> value;
153 GDataErrorCode error;
154 gdata::GetDataCallback cb = base::Bind(&GetDataOperationParseJsonCallback,
155 &error,
156 &value);
157 JsonParseTestGetDataOperation* getData =
158 new JsonParseTestGetDataOperation(runner_->operation_registry(), cb);
159 getData->NotifyStart();
160
161 // Parses an invalid json string.
162 {
163 std::string invalid_json_str =
164 "/* hogehoge *"
165 " \"test\": {"
166 " \"moo\": \"cow"
167 " "
168 " \"list\": ["
169 " \"foo\","
170 " \"bar\""
171 " ]";
172
173 getData->ParseResponse(HTTP_SUCCESS, invalid_json_str);
174 test_util::RunBlockingPoolTask();
175
176 EXPECT_EQ(GDATA_PARSE_ERROR, error);
177 ASSERT_TRUE(value.get() == NULL);
178 }
179 }
180
181 } // namespace gdata
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_operations.cc ('k') | chrome/browser/chromeos/gdata/gdata_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698