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

Side by Side Diff: chromeos/dbus/ibus/ibus_object_unittest.cc

Issue 11361210: Extends IBusObject to handle attachment field. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix include order Created 8 years, 1 month 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 | « chromeos/dbus/ibus/ibus_object.cc ('k') | chromeos/dbus/ibus/ibus_property.cc » ('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 Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // TODO(nona): Add more test case, especially fail case. 4 // TODO(nona): Add more test case, especially fail case.
5 5
6 #include "chromeos/dbus/ibus/ibus_object.h" 6 #include "chromeos/dbus/ibus/ibus_object.h"
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/values.h"
12 #include "dbus/message.h" 13 #include "dbus/message.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 namespace chromeos { 16 namespace chromeos {
16 // TODO(nona): Remove ibus namespace after complete libibus removal. 17 // TODO(nona): Remove ibus namespace after complete libibus removal.
17 namespace ibus { 18 namespace ibus {
18 19
19 TEST(IBusObjectTest, WriteReadTest) { 20 TEST(IBusObjectTest, WriteReadTest) {
20 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty()); 21 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty());
21 dbus::MessageWriter writer(message.get()); 22 dbus::MessageWriter writer(message.get());
22 23
23 const char kSampleTypeName1[] = "Sample Type Name 1"; 24 const char kSampleTypeName1[] = "Sample Type Name 1";
24 const char kSampleTypeName2[] = "Sample Type Name 2"; 25 const char kSampleTypeName2[] = "Sample Type Name 2";
25 const char kSampleText1[] = "Sample Text 1"; 26 const char kSampleText1[] = "Sample Text 1";
26 const char kSampleText2[] = "Sample Text 2"; 27 const char kSampleText2[] = "Sample Text 2";
27 const uint32 kSampleUint32 = 12345UL; 28 const uint32 kSampleUint32 = 12345UL;
28 const int32 kSampleInt32 = 54321; 29 const int32 kSampleInt32 = 54321;
29 const bool kSampleBool = false; 30 const bool kSampleBool = false;
30 const uint32 kSampleArrayOfUint32Count = 10UL; 31 const uint32 kSampleArrayOfUint32Count = 10UL;
32 const char kAttachmentKey[] = "key";
33 const char kStringAttachment[] = "Attachment String Value";
31 34
32 // Create ibus object. 35 // Create ibus object.
33 IBusObjectWriter ibus_object_writer(kSampleTypeName1, "suibauv", &writer); 36 IBusObjectWriter ibus_object_writer(kSampleTypeName1, "suibauv", &writer);
37
38 // Write attachment field.
39 scoped_ptr<base::Value> write_value(
40 base::Value::CreateStringValue(kStringAttachment));
41 ibus_object_writer.AddAttachment(kAttachmentKey, *write_value.get());
42 ibus_object_writer.CloseHeader();
43
44 // Write contents values.
34 ibus_object_writer.AppendString(kSampleText1); 45 ibus_object_writer.AppendString(kSampleText1);
35 ibus_object_writer.AppendUint32(kSampleUint32); 46 ibus_object_writer.AppendUint32(kSampleUint32);
36 ibus_object_writer.AppendInt32(kSampleInt32); 47 ibus_object_writer.AppendInt32(kSampleInt32);
37 ibus_object_writer.AppendBool(kSampleBool); 48 ibus_object_writer.AppendBool(kSampleBool);
38 dbus::MessageWriter array_writer(NULL); 49 dbus::MessageWriter array_writer(NULL);
39 ibus_object_writer.OpenArray("u", &array_writer); 50 ibus_object_writer.OpenArray("u", &array_writer);
40 for (uint32 i = 0; i < kSampleArrayOfUint32Count; ++i) 51 for (uint32 i = 0; i < kSampleArrayOfUint32Count; ++i)
41 array_writer.AppendUint32(i); 52 array_writer.AppendUint32(i);
42 ibus_object_writer.CloseContainer(&array_writer); 53 ibus_object_writer.CloseContainer(&array_writer);
43 IBusObjectWriter ibus_nested_object_writer(kSampleTypeName2, "s", NULL); 54 IBusObjectWriter ibus_nested_object_writer(kSampleTypeName2, "s", NULL);
44 ibus_object_writer.AppendIBusObject(&ibus_nested_object_writer); 55 ibus_object_writer.AppendIBusObject(&ibus_nested_object_writer);
56 ibus_nested_object_writer.CloseHeader();
45 ibus_nested_object_writer.AppendString(kSampleText2); 57 ibus_nested_object_writer.AppendString(kSampleText2);
46 ibus_object_writer.CloseAll(); 58 ibus_object_writer.CloseAll();
47 59
48 // Read ibus_object. 60 // Read ibus_object.
49 dbus::MessageReader reader(message.get()); 61 dbus::MessageReader reader(message.get());
50 IBusObjectReader ibus_object_reader(kSampleTypeName1, &reader); 62 IBusObjectReader ibus_object_reader(kSampleTypeName1, &reader);
51 ASSERT_TRUE(ibus_object_reader.Init()); 63 ASSERT_TRUE(ibus_object_reader.Init());
64 // Check the attachment value;
65 const base::Value* read_value =
66 ibus_object_reader.GetAttachment(kAttachmentKey);
67 ASSERT_TRUE(read_value);
68 std::string attachment_value;
69 ASSERT_TRUE(read_value->GetAsString(&attachment_value));
70 EXPECT_EQ(kStringAttachment, attachment_value);
52 // Check the first string value. 71 // Check the first string value.
53 std::string expected_string; 72 std::string expected_string;
54 ASSERT_TRUE(ibus_object_reader.PopString(&expected_string)); 73 ASSERT_TRUE(ibus_object_reader.PopString(&expected_string));
55 EXPECT_EQ(kSampleText1, expected_string); 74 EXPECT_EQ(kSampleText1, expected_string);
56 // Check the second uint32 value. 75 // Check the second uint32 value.
57 uint32 expected_uint32 = 0UL; 76 uint32 expected_uint32 = 0UL;
58 ASSERT_TRUE(ibus_object_reader.PopUint32(&expected_uint32)); 77 ASSERT_TRUE(ibus_object_reader.PopUint32(&expected_uint32));
59 EXPECT_EQ(kSampleUint32, expected_uint32); 78 EXPECT_EQ(kSampleUint32, expected_uint32);
60 // Check the third int value. 79 // Check the third int value.
61 int32 expected_int32 = 0; 80 int32 expected_int32 = 0;
(...skipping 24 matching lines...) Expand all
86 EXPECT_FALSE(reader.HasMoreData()); 105 EXPECT_FALSE(reader.HasMoreData());
87 } 106 }
88 107
89 TEST(IBusObjectTest, EmptyEntryTest) { 108 TEST(IBusObjectTest, EmptyEntryTest) {
90 const char kSampleTypeName[] = "Empty IBusObject Name"; 109 const char kSampleTypeName[] = "Empty IBusObject Name";
91 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty()); 110 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty());
92 111
93 // Write empty IBusObject. 112 // Write empty IBusObject.
94 dbus::MessageWriter writer(message.get()); 113 dbus::MessageWriter writer(message.get());
95 IBusObjectWriter ibus_object_writer(kSampleTypeName, "", &writer); 114 IBusObjectWriter ibus_object_writer(kSampleTypeName, "", &writer);
115 ibus_object_writer.CloseHeader();
96 ibus_object_writer.CloseAll(); 116 ibus_object_writer.CloseAll();
97 117
98 // Read empty IBusObject. 118 // Read empty IBusObject.
99 dbus::MessageReader reader(message.get()); 119 dbus::MessageReader reader(message.get());
100 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader); 120 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader);
101 ASSERT_TRUE(ibus_object_reader.Init()); 121 ASSERT_TRUE(ibus_object_reader.Init());
102 EXPECT_FALSE(ibus_object_reader.HasMoreData()); 122 EXPECT_FALSE(ibus_object_reader.HasMoreData());
103 } 123 }
104 124
105 TEST(IBusObjectTest, PopAppendIBusTextTest) { 125 TEST(IBusObjectTest, PopAppendIBusTextTest) {
106 const char kSampleTypeName[] = "Empty IBusObject Name"; 126 const char kSampleTypeName[] = "Empty IBusObject Name";
107 const char kSampleString[] = "Sapmle String"; 127 const char kSampleString[] = "Sapmle String";
108 IBusText::SelectionAttribute selection_attribute; 128 IBusText::SelectionAttribute selection_attribute;
109 selection_attribute.start_index = 0UL; 129 selection_attribute.start_index = 0UL;
110 selection_attribute.end_index = 10UL; 130 selection_attribute.end_index = 10UL;
111 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty()); 131 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty());
112 132
113 // Write IBusText. 133 // Write IBusText.
114 dbus::MessageWriter writer(message.get()); 134 dbus::MessageWriter writer(message.get());
115 IBusObjectWriter ibus_object_writer(kSampleTypeName, "v", &writer); 135 IBusObjectWriter ibus_object_writer(kSampleTypeName, "v", &writer);
136 ibus_object_writer.CloseHeader();
116 IBusText ibus_text; 137 IBusText ibus_text;
117 ibus_text.mutable_selection_attributes()->push_back(selection_attribute); 138 ibus_text.mutable_selection_attributes()->push_back(selection_attribute);
118 ibus_text.set_text(kSampleString); 139 ibus_text.set_text(kSampleString);
119 ibus_object_writer.AppendIBusText(ibus_text); 140 ibus_object_writer.AppendIBusText(ibus_text);
120 ibus_object_writer.CloseAll(); 141 ibus_object_writer.CloseAll();
121 142
122 // Read IBusText; 143 // Read IBusText;
123 dbus::MessageReader reader(message.get()); 144 dbus::MessageReader reader(message.get());
124 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader); 145 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader);
125 IBusText result_text; 146 IBusText result_text;
(...skipping 11 matching lines...) Expand all
137 } 158 }
138 159
139 TEST(IBusObjectTest, PopAppendStringAsIBusText) { 160 TEST(IBusObjectTest, PopAppendStringAsIBusText) {
140 const char kSampleTypeName[] = "Empty IBusObject Name"; 161 const char kSampleTypeName[] = "Empty IBusObject Name";
141 const char kSampleString[] = "Sapmle String"; 162 const char kSampleString[] = "Sapmle String";
142 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty()); 163 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty());
143 164
144 // Write string as IBusText. 165 // Write string as IBusText.
145 dbus::MessageWriter writer(message.get()); 166 dbus::MessageWriter writer(message.get());
146 IBusObjectWriter ibus_object_writer(kSampleTypeName, "v", &writer); 167 IBusObjectWriter ibus_object_writer(kSampleTypeName, "v", &writer);
168 ibus_object_writer.CloseHeader();
147 ibus_object_writer.AppendStringAsIBusText(kSampleString); 169 ibus_object_writer.AppendStringAsIBusText(kSampleString);
148 ibus_object_writer.CloseAll(); 170 ibus_object_writer.CloseAll();
149 171
150 // Read string from IBusText. 172 // Read string from IBusText.
151 dbus::MessageReader reader(message.get()); 173 dbus::MessageReader reader(message.get());
152 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader); 174 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader);
153 std::string result_str; 175 std::string result_str;
154 ASSERT_TRUE(ibus_object_reader.Init()); 176 ASSERT_TRUE(ibus_object_reader.Init());
155 ASSERT_TRUE(ibus_object_reader.PopStringFromIBusText(&result_str)); 177 ASSERT_TRUE(ibus_object_reader.PopStringFromIBusText(&result_str));
156 EXPECT_FALSE(ibus_object_reader.HasMoreData()); 178 EXPECT_FALSE(ibus_object_reader.HasMoreData());
157 EXPECT_EQ(kSampleString, result_str); 179 EXPECT_EQ(kSampleString, result_str);
158 } 180 }
159 181
160 TEST(IBusObjectTest, AttachmentTest) {
161 // The IBusObjectWriter does not support attachment field writing, so crate
162 // IBusObject with attachment field manually.
163 const char kSampleTypeName[] = "IBusObject Name";
164 const char kSampleDictKey[] = "Sample Key";
165 const char kSampleText[] = "SampleText";
166 scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty());
167 dbus::MessageWriter writer(message.get());
168
169 // Create IBusObject header.
170 dbus::MessageWriter top_variant_writer(NULL);
171 writer.OpenVariant("(sa{sv})", &top_variant_writer);
172 dbus::MessageWriter contents_writer(NULL);
173 top_variant_writer.OpenStruct(&contents_writer);
174 contents_writer.AppendString(kSampleTypeName);
175
176 // Write values into attachment field.
177 dbus::MessageWriter attachment_array_writer(NULL);
178 contents_writer.OpenArray("{sv}", &attachment_array_writer);
179 dbus::MessageWriter entry_writer(NULL);
180 attachment_array_writer.OpenDictEntry(&entry_writer);
181 entry_writer.AppendString(kSampleDictKey);
182 dbus::MessageWriter variant_writer(NULL);
183 entry_writer.OpenVariant("s",&variant_writer);
184 variant_writer.AppendString(kSampleText);
185
186 // Close all containers.
187 entry_writer.CloseContainer(&variant_writer);
188 attachment_array_writer.CloseContainer(&entry_writer);
189 contents_writer.CloseContainer(&attachment_array_writer);
190 top_variant_writer.CloseContainer(&contents_writer);
191 writer.CloseContainer(&top_variant_writer);
192
193 // Read with IBusObjectReader.
194 dbus::MessageReader reader(message.get());
195 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader);
196 dbus::MessageReader attr_reader(NULL);
197 ASSERT_TRUE(ibus_object_reader.InitWithAttachmentReader(&attr_reader));
198 dbus::MessageReader dict_reader(NULL);
199
200 // Check the values.
201 ASSERT_TRUE(attr_reader.PopDictEntry(&dict_reader));
202 std::string key;
203 std::string value;
204
205 ASSERT_TRUE(dict_reader.PopString(&key));
206 EXPECT_EQ(kSampleDictKey, key);
207
208 dbus::MessageReader variant_reader(NULL);
209 ASSERT_TRUE(dict_reader.PopVariant(&variant_reader));
210 ASSERT_TRUE(variant_reader.PopString(&value));
211 EXPECT_EQ(kSampleText, value);
212 }
213
214 TEST(IBusObjectTest, PopAppendIBusPropertyTest) { 182 TEST(IBusObjectTest, PopAppendIBusPropertyTest) {
215 const char kSampleTypeName[] = "Empty IBusObject Name"; 183 const char kSampleTypeName[] = "Empty IBusObject Name";
216 const char kSampleKey[] = "Key"; 184 const char kSampleKey[] = "Key";
217 const IBusProperty::IBusPropertyType kSampleType = 185 const IBusProperty::IBusPropertyType kSampleType =
218 IBusProperty::IBUS_PROPERTY_TYPE_MENU; 186 IBusProperty::IBUS_PROPERTY_TYPE_MENU;
219 const char kSampleLabel[] = "Label"; 187 const char kSampleLabel[] = "Label";
220 const char kSampleTooltip[] = "Tooltip"; 188 const char kSampleTooltip[] = "Tooltip";
221 const bool kSampleVisible = true; 189 const bool kSampleVisible = true;
222 const bool kSampleChecked = false; 190 const bool kSampleChecked = false;
223 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); 191 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
224 192
225 // Create IBusProperty. 193 // Create IBusProperty.
226 ibus::IBusProperty property; 194 ibus::IBusProperty property;
227 property.set_key(kSampleKey); 195 property.set_key(kSampleKey);
228 property.set_type(kSampleType); 196 property.set_type(kSampleType);
229 property.set_label(kSampleLabel); 197 property.set_label(kSampleLabel);
230 property.set_tooltip(kSampleTooltip); 198 property.set_tooltip(kSampleTooltip);
231 property.set_visible(kSampleVisible); 199 property.set_visible(kSampleVisible);
232 property.set_checked(kSampleChecked); 200 property.set_checked(kSampleChecked);
233 201
234 // Write a IBusProperty. 202 // Write a IBusProperty.
235 dbus::MessageWriter writer(response.get()); 203 dbus::MessageWriter writer(response.get());
236 IBusObjectWriter ibus_object_writer(kSampleTypeName, "v", &writer); 204 IBusObjectWriter ibus_object_writer(kSampleTypeName, "v", &writer);
205 ibus_object_writer.CloseHeader();
237 ibus_object_writer.AppendIBusProperty(property); 206 ibus_object_writer.AppendIBusProperty(property);
238 ibus_object_writer.CloseAll(); 207 ibus_object_writer.CloseAll();
239 208
240 // Read string from IBusText. 209 // Read string from IBusText.
241 dbus::MessageReader reader(response.get()); 210 dbus::MessageReader reader(response.get());
242 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader); 211 IBusObjectReader ibus_object_reader(kSampleTypeName, &reader);
243 ibus::IBusProperty result_property; 212 ibus::IBusProperty result_property;
244 ASSERT_TRUE(ibus_object_reader.Init()); 213 ASSERT_TRUE(ibus_object_reader.Init());
245 ASSERT_TRUE(ibus_object_reader.PopIBusProperty(&result_property)); 214 ASSERT_TRUE(ibus_object_reader.PopIBusProperty(&result_property));
246 EXPECT_EQ(kSampleKey, result_property.key()); 215 EXPECT_EQ(kSampleKey, result_property.key());
247 EXPECT_EQ(kSampleType, result_property.type()); 216 EXPECT_EQ(kSampleType, result_property.type());
248 EXPECT_EQ(kSampleLabel, result_property.label()); 217 EXPECT_EQ(kSampleLabel, result_property.label());
249 EXPECT_EQ(kSampleTooltip, result_property.tooltip()); 218 EXPECT_EQ(kSampleTooltip, result_property.tooltip());
250 EXPECT_EQ(kSampleVisible, result_property.visible()); 219 EXPECT_EQ(kSampleVisible, result_property.visible());
251 EXPECT_EQ(kSampleChecked, result_property.checked()); 220 EXPECT_EQ(kSampleChecked, result_property.checked());
252 } 221 }
253 222
254 } // namespace ibus 223 } // namespace ibus
255 } // namespace chromeos 224 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/ibus/ibus_object.cc ('k') | chromeos/dbus/ibus/ibus_property.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698