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

Side by Side Diff: dbus/message_unittest.cc

Issue 7491029: Implement Bus and ObjectProxy classes for our D-Bus library. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: minor change Created 9 years, 4 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
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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 4
5 #include "dbus/message.h" 5 #include "dbus/message.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 11
11 // Test that a byte can be properly written and read. We only have this 12 // Test that a byte can be properly written and read. We only have this
12 // test for byte, as repeating this for other basic types is too redundant. 13 // test for byte, as repeating this for other basic types is too redundant.
13 TEST(MessageTest, AppendAndPopByte) { 14 TEST(MessageTest, AppendAndPopByte) {
14 dbus::Message message; 15 dbus::Message message;
15 message.reset_raw_message(dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL)); 16 message.reset_raw_message(dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL));
16 dbus::MessageWriter writer(&message); 17 dbus::MessageWriter writer(&message);
17 writer.AppendByte(123); // The input is 123. 18 writer.AppendByte(123); // The input is 123.
18 19
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 TEST(MessageTest, Message) { 338 TEST(MessageTest, Message) {
338 dbus::Message message; 339 dbus::Message message;
339 EXPECT_TRUE(message.raw_message() == NULL); 340 EXPECT_TRUE(message.raw_message() == NULL);
340 EXPECT_EQ(dbus::Message::MESSAGE_INVALID, message.GetMessageType()); 341 EXPECT_EQ(dbus::Message::MESSAGE_INVALID, message.GetMessageType());
341 } 342 }
342 343
343 TEST(MessageTest, MethodCall) { 344 TEST(MessageTest, MethodCall) {
344 dbus::MethodCall method_call("com.example.Interface", "SomeMethod"); 345 dbus::MethodCall method_call("com.example.Interface", "SomeMethod");
345 EXPECT_TRUE(method_call.raw_message() != NULL); 346 EXPECT_TRUE(method_call.raw_message() != NULL);
346 EXPECT_EQ(dbus::Message::MESSAGE_METHOD_CALL, method_call.GetMessageType()); 347 EXPECT_EQ(dbus::Message::MESSAGE_METHOD_CALL, method_call.GetMessageType());
347 method_call.SetServiceName("com.example.Service"); 348 method_call.SetDestination("com.example.Service");
348 method_call.SetObjectPath("/com/example/Object"); 349 method_call.SetPath("/com/example/Object");
349 350
350 dbus::MessageWriter writer(&method_call); 351 dbus::MessageWriter writer(&method_call);
351 writer.AppendString("payload"); 352 writer.AppendString("payload");
352 353
353 EXPECT_EQ("destination: com.example.Service\n" 354 EXPECT_EQ("destination: com.example.Service\n"
354 "path: /com/example/Object\n" 355 "path: /com/example/Object\n"
355 "interface: com.example.Interface\n" 356 "interface: com.example.Interface\n"
356 "member: SomeMethod\n" 357 "member: SomeMethod\n"
357 "signature: s\n" 358 "signature: s\n"
358 "\n" 359 "\n"
359 "string \"payload\"\n", 360 "string \"payload\"\n",
360 method_call.ToString()); 361 method_call.ToString());
361 } 362 }
362 363
364 TEST(MessageTest, MethodCall_FromRawMessage) {
365 DBusMessage* raw_message = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL);
366 dbus_message_set_interface(raw_message, "com.example.Interface");
367 dbus_message_set_member(raw_message, "SomeMethod");
368
369 scoped_ptr<dbus::MethodCall> method_call(
370 dbus::MethodCall::FromRawMessage(raw_message));
371 EXPECT_EQ("com.example.Interface", method_call->GetInterface());
372 EXPECT_EQ("SomeMethod", method_call->GetMember());
373 }
374
363 TEST(MessageTest, Response) { 375 TEST(MessageTest, Response) {
364 dbus::Response response; 376 dbus::Response response;
365 EXPECT_TRUE(response.raw_message() == NULL); 377 EXPECT_TRUE(response.raw_message() == NULL);
366 response.reset_raw_message( 378 response.reset_raw_message(
367 dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_RETURN)); 379 dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_RETURN));
368 EXPECT_EQ(dbus::Message::MESSAGE_METHOD_RETURN, response.GetMessageType()); 380 EXPECT_EQ(dbus::Message::MESSAGE_METHOD_RETURN, response.GetMessageType());
369 } 381 }
370 382
383 TEST(MergeTest, Response_FromMethodCall) {
384 const uint32 kSerial = 123;
385 dbus::MethodCall method_call("com.example.Interface", "SomeMethod");
386 method_call.SetSerial(kSerial);
387
388 scoped_ptr<dbus::Response> response(
389 dbus::Response::FromMethodCall(&method_call));
390 EXPECT_EQ(dbus::Message::MESSAGE_METHOD_RETURN, response->GetMessageType());
391 // The serial should be copied to the reply serial.
392 EXPECT_EQ(kSerial, response->GetReplySerial());
393 }
394
395 TEST(MergeTest, ErrorResponse) {
396 dbus::ErrorResponse error_response;
397 EXPECT_TRUE(error_response.raw_message() == NULL);
398 error_response.reset_raw_message(
399 dbus_message_new(DBUS_MESSAGE_TYPE_ERROR));
400 EXPECT_EQ(dbus::Message::MESSAGE_ERROR, error_response.GetMessageType());
401 }
402
403 TEST(MergeTest, ErrorResponse_FromMethodCall) {
404 const uint32 kSerial = 123;
405 const char kErrorMessage[] = "error message";
406
407 dbus::MethodCall method_call("com.example.Interface", "SomeMethod");
408 method_call.SetSerial(kSerial);
409
410 scoped_ptr<dbus::ErrorResponse> error_response(
411 dbus::ErrorResponse::FromMethodCall(&method_call,
412 DBUS_ERROR_FAILED,
413 kErrorMessage));
414 EXPECT_EQ(dbus::Message::MESSAGE_ERROR, error_response->GetMessageType());
415 // The serial should be copied to the reply serial.
416 EXPECT_EQ(kSerial, error_response->GetReplySerial());
417
418 // Error message should be added to the payload.
419 dbus::MessageReader reader(error_response.get());
420 std::string error_message;
421 ASSERT_TRUE(reader.PopString(&error_message));
422 EXPECT_EQ(kErrorMessage, error_message);
423 }
424
371 TEST(MessageTest, ToString_EmptyMessage) { 425 TEST(MessageTest, ToString_EmptyMessage) {
372 dbus::Message message; 426 dbus::Message message;
373 EXPECT_EQ("", message.ToString()); 427 EXPECT_EQ("", message.ToString());
374 } 428 }
429
430 TEST(MessageTest, GetAndSetHeaders) {
431 dbus::Message message;
432 message.reset_raw_message(dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL));
433
434 EXPECT_EQ("", message.GetDestination());
435 EXPECT_EQ("", message.GetPath());
436 EXPECT_EQ("", message.GetInterface());
437 EXPECT_EQ("", message.GetMember());
438 EXPECT_EQ("", message.GetErrorName());
439 EXPECT_EQ("", message.GetSender());
440 EXPECT_EQ(0U, message.GetSerial());
441 EXPECT_EQ(0U, message.GetReplySerial());
442
443 message.SetDestination("org.chromium.destination");
444 message.SetPath("/org/chromium/path");
445 message.SetInterface("org.chromium.interface");
446 message.SetMember("member");
447 message.SetErrorName("org.chromium.error");
448 message.SetSender(":1.2");
449 message.SetSerial(123);
450 message.SetReplySerial(456);
451
452 EXPECT_EQ("org.chromium.destination", message.GetDestination());
453 EXPECT_EQ("/org/chromium/path", message.GetPath());
454 EXPECT_EQ("org.chromium.interface", message.GetInterface());
455 EXPECT_EQ("member", message.GetMember());
456 EXPECT_EQ("org.chromium.error", message.GetErrorName());
457 EXPECT_EQ(":1.2", message.GetSender());
458 EXPECT_EQ(123U, message.GetSerial());
459 EXPECT_EQ(456U, message.GetReplySerial());
460 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698