OLD | NEW |
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 | 4 |
5 #include "chromeos/dbus/ibus/ibus_panel_service.h" | 5 #include "chromeos/dbus/ibus/ibus_panel_service.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 MOCK_METHOD1(RegisterProperties, | 56 MOCK_METHOD1(RegisterProperties, |
57 void(const IBusPropertyList& properties)); | 57 void(const IBusPropertyList& properties)); |
58 MOCK_METHOD1(UpdateProperty, void(const IBusProperty& property)); | 58 MOCK_METHOD1(UpdateProperty, void(const IBusProperty& property)); |
59 | 59 |
60 private: | 60 private: |
61 DISALLOW_COPY_AND_ASSIGN(MockIBusPanelPropertyHandler); | 61 DISALLOW_COPY_AND_ASSIGN(MockIBusPanelPropertyHandler); |
62 }; | 62 }; |
63 | 63 |
64 class MockResponseSender { | 64 class MockResponseSender { |
65 public: | 65 public: |
66 MOCK_METHOD1(Run, void(dbus::Response* reponse)); | 66 // GMock doesn't support mocking methods which take scoped_ptr<>. |
| 67 MOCK_METHOD1(MockRun, void(dbus::Response* reponse)); |
| 68 void Run(scoped_ptr<dbus::Response> response) { |
| 69 MockRun(response.get()); |
| 70 } |
67 }; | 71 }; |
68 | 72 |
69 // This class is used to verify that a method call response is empty. This class | 73 // This class is used to verify that a method call response is empty. This class |
70 // verifies the response has correct message serial number and has no entry in | 74 // verifies the response has correct message serial number and has no entry in |
71 // response. | 75 // response. |
72 class EmptyResponseVerifier { | 76 class EmptyResponseVerifier { |
73 public: | 77 public: |
74 explicit EmptyResponseVerifier(uint32 expected_serial_number) | 78 explicit EmptyResponseVerifier(uint32 expected_serial_number) |
75 : expected_serial_number_(expected_serial_number) {} | 79 : expected_serial_number_(expected_serial_number) {} |
76 | 80 |
77 // Verifies the given |response| has no argument. | 81 // Verifies the given |response| has no argument. |
78 void Verify(dbus::Response* response) { | 82 void Verify(dbus::Response* response) { |
79 scoped_ptr<dbus::Response> response_deleter(response); | |
80 EXPECT_EQ(expected_serial_number_, response->GetReplySerial()); | 83 EXPECT_EQ(expected_serial_number_, response->GetReplySerial()); |
81 dbus::MessageReader reader(response); | 84 dbus::MessageReader reader(response); |
82 EXPECT_FALSE(reader.HasMoreData()); | 85 EXPECT_FALSE(reader.HasMoreData()); |
83 } | 86 } |
84 | 87 |
85 private: | 88 private: |
86 const uint32 expected_serial_number_; | 89 const uint32 expected_serial_number_; |
87 | 90 |
88 DISALLOW_COPY_AND_ASSIGN(EmptyResponseVerifier); | 91 DISALLOW_COPY_AND_ASSIGN(EmptyResponseVerifier); |
89 }; | 92 }; |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 success)); | 345 success)); |
343 } | 346 } |
344 }; | 347 }; |
345 | 348 |
346 TEST_F(IBusPanelServiceTest, HideLookupTableTest) { | 349 TEST_F(IBusPanelServiceTest, HideLookupTableTest) { |
347 // Set expectations. | 350 // Set expectations. |
348 const uint32 kSerialNo = 1; | 351 const uint32 kSerialNo = 1; |
349 EXPECT_CALL(*candidate_window_handler_, HideLookupTable()); | 352 EXPECT_CALL(*candidate_window_handler_, HideLookupTable()); |
350 MockResponseSender response_sender; | 353 MockResponseSender response_sender; |
351 EmptyResponseVerifier response_expectation(kSerialNo); | 354 EmptyResponseVerifier response_expectation(kSerialNo); |
352 EXPECT_CALL(response_sender, Run(_)) | 355 EXPECT_CALL(response_sender, MockRun(_)) |
353 .WillOnce(Invoke(&response_expectation, | 356 .WillOnce(Invoke(&response_expectation, |
354 &EmptyResponseVerifier::Verify)); | 357 &EmptyResponseVerifier::Verify)); |
355 | 358 |
356 // Create method call; | 359 // Create method call; |
357 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 360 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
358 ibus::panel::kHideLookupTableMethod); | 361 ibus::panel::kHideLookupTableMethod); |
359 method_call.SetSerial(kSerialNo); | 362 method_call.SetSerial(kSerialNo); |
360 | 363 |
361 // Call exported function. | 364 // Call exported function. |
362 EXPECT_NE(method_callback_map_.find(ibus::panel::kHideLookupTableMethod), | 365 EXPECT_NE(method_callback_map_.find(ibus::panel::kHideLookupTableMethod), |
363 method_callback_map_.end()); | 366 method_callback_map_.end()); |
364 method_callback_map_[ibus::panel::kHideLookupTableMethod].Run( | 367 method_callback_map_[ibus::panel::kHideLookupTableMethod].Run( |
365 &method_call, | 368 &method_call, |
366 base::Bind(&MockResponseSender::Run, | 369 base::Bind(&MockResponseSender::Run, |
367 base::Unretained(&response_sender))); | 370 base::Unretained(&response_sender))); |
368 } | 371 } |
369 | 372 |
370 TEST_F(IBusPanelServiceTest, HideAuxiliaryTextTest) { | 373 TEST_F(IBusPanelServiceTest, HideAuxiliaryTextTest) { |
371 // Set expectations. | 374 // Set expectations. |
372 const uint32 kSerialNo = 1; | 375 const uint32 kSerialNo = 1; |
373 EXPECT_CALL(*candidate_window_handler_, HideAuxiliaryText()); | 376 EXPECT_CALL(*candidate_window_handler_, HideAuxiliaryText()); |
374 MockResponseSender response_sender; | 377 MockResponseSender response_sender; |
375 EmptyResponseVerifier response_expectation(kSerialNo); | 378 EmptyResponseVerifier response_expectation(kSerialNo); |
376 EXPECT_CALL(response_sender, Run(_)) | 379 EXPECT_CALL(response_sender, MockRun(_)) |
377 .WillOnce(Invoke(&response_expectation, | 380 .WillOnce(Invoke(&response_expectation, |
378 &EmptyResponseVerifier::Verify)); | 381 &EmptyResponseVerifier::Verify)); |
379 | 382 |
380 // Create method call; | 383 // Create method call; |
381 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 384 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
382 ibus::panel::kHideAuxiliaryTextMethod); | 385 ibus::panel::kHideAuxiliaryTextMethod); |
383 method_call.SetSerial(kSerialNo); | 386 method_call.SetSerial(kSerialNo); |
384 | 387 |
385 // Call exported function. | 388 // Call exported function. |
386 EXPECT_NE(method_callback_map_.find(ibus::panel::kHideAuxiliaryTextMethod), | 389 EXPECT_NE(method_callback_map_.find(ibus::panel::kHideAuxiliaryTextMethod), |
387 method_callback_map_.end()); | 390 method_callback_map_.end()); |
388 method_callback_map_[ibus::panel::kHideAuxiliaryTextMethod].Run( | 391 method_callback_map_[ibus::panel::kHideAuxiliaryTextMethod].Run( |
389 &method_call, | 392 &method_call, |
390 base::Bind(&MockResponseSender::Run, | 393 base::Bind(&MockResponseSender::Run, |
391 base::Unretained(&response_sender))); | 394 base::Unretained(&response_sender))); |
392 } | 395 } |
393 | 396 |
394 TEST_F(IBusPanelServiceTest, HidePreeditTextTest) { | 397 TEST_F(IBusPanelServiceTest, HidePreeditTextTest) { |
395 // Set expectations. | 398 // Set expectations. |
396 const uint32 kSerialNo = 1; | 399 const uint32 kSerialNo = 1; |
397 EXPECT_CALL(*candidate_window_handler_, HidePreeditText()); | 400 EXPECT_CALL(*candidate_window_handler_, HidePreeditText()); |
398 MockResponseSender response_sender; | 401 MockResponseSender response_sender; |
399 EmptyResponseVerifier response_expectation(kSerialNo); | 402 EmptyResponseVerifier response_expectation(kSerialNo); |
400 EXPECT_CALL(response_sender, Run(_)) | 403 EXPECT_CALL(response_sender, MockRun(_)) |
401 .WillOnce(Invoke(&response_expectation, | 404 .WillOnce(Invoke(&response_expectation, |
402 &EmptyResponseVerifier::Verify)); | 405 &EmptyResponseVerifier::Verify)); |
403 | 406 |
404 // Create method call; | 407 // Create method call; |
405 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 408 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
406 ibus::panel::kHidePreeditTextMethod); | 409 ibus::panel::kHidePreeditTextMethod); |
407 method_call.SetSerial(kSerialNo); | 410 method_call.SetSerial(kSerialNo); |
408 | 411 |
409 // Call exported function. | 412 // Call exported function. |
410 EXPECT_NE(method_callback_map_.find(ibus::panel::kHidePreeditTextMethod), | 413 EXPECT_NE(method_callback_map_.find(ibus::panel::kHidePreeditTextMethod), |
(...skipping 12 matching lines...) Expand all Loading... |
423 table.set_cursor_position(4); | 426 table.set_cursor_position(4); |
424 const bool kVisible = false; | 427 const bool kVisible = false; |
425 | 428 |
426 | 429 |
427 UpdateLookupTableVerifier evaluator(table, kVisible); | 430 UpdateLookupTableVerifier evaluator(table, kVisible); |
428 EXPECT_CALL(*candidate_window_handler_, UpdateLookupTable(_, _)) | 431 EXPECT_CALL(*candidate_window_handler_, UpdateLookupTable(_, _)) |
429 .WillOnce(Invoke(&evaluator, | 432 .WillOnce(Invoke(&evaluator, |
430 &UpdateLookupTableVerifier::Verify)); | 433 &UpdateLookupTableVerifier::Verify)); |
431 MockResponseSender response_sender; | 434 MockResponseSender response_sender; |
432 EmptyResponseVerifier response_expectation(kSerialNo); | 435 EmptyResponseVerifier response_expectation(kSerialNo); |
433 EXPECT_CALL(response_sender, Run(_)) | 436 EXPECT_CALL(response_sender, MockRun(_)) |
434 .WillOnce(Invoke(&response_expectation, | 437 .WillOnce(Invoke(&response_expectation, |
435 &EmptyResponseVerifier::Verify)); | 438 &EmptyResponseVerifier::Verify)); |
436 | 439 |
437 // Create method call; | 440 // Create method call; |
438 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 441 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
439 ibus::panel::kUpdateLookupTableMethod); | 442 ibus::panel::kUpdateLookupTableMethod); |
440 method_call.SetSerial(kSerialNo); | 443 method_call.SetSerial(kSerialNo); |
441 dbus::MessageWriter writer(&method_call); | 444 dbus::MessageWriter writer(&method_call); |
442 AppendIBusLookupTable(table, &writer); | 445 AppendIBusLookupTable(table, &writer); |
443 writer.AppendBool(kVisible); | 446 writer.AppendBool(kVisible); |
444 | 447 |
445 // Call exported function. | 448 // Call exported function. |
446 EXPECT_NE(method_callback_map_.find(ibus::panel::kUpdateLookupTableMethod), | 449 EXPECT_NE(method_callback_map_.find(ibus::panel::kUpdateLookupTableMethod), |
447 method_callback_map_.end()); | 450 method_callback_map_.end()); |
448 method_callback_map_[ibus::panel::kUpdateLookupTableMethod].Run( | 451 method_callback_map_[ibus::panel::kUpdateLookupTableMethod].Run( |
449 &method_call, | 452 &method_call, |
450 base::Bind(&MockResponseSender::Run, | 453 base::Bind(&MockResponseSender::Run, |
451 base::Unretained(&response_sender))); | 454 base::Unretained(&response_sender))); |
452 } | 455 } |
453 | 456 |
454 TEST_F(IBusPanelServiceTest, UpdateAuxiliaryTextTest) { | 457 TEST_F(IBusPanelServiceTest, UpdateAuxiliaryTextTest) { |
455 // Set expectations. | 458 // Set expectations. |
456 const uint32 kSerialNo = 1; | 459 const uint32 kSerialNo = 1; |
457 const std::string text = "Sample text"; | 460 const std::string text = "Sample text"; |
458 const bool kVisible = false; | 461 const bool kVisible = false; |
459 | 462 |
460 EXPECT_CALL(*candidate_window_handler_, UpdateAuxiliaryText(text, kVisible)); | 463 EXPECT_CALL(*candidate_window_handler_, UpdateAuxiliaryText(text, kVisible)); |
461 MockResponseSender response_sender; | 464 MockResponseSender response_sender; |
462 EmptyResponseVerifier response_expectation(kSerialNo); | 465 EmptyResponseVerifier response_expectation(kSerialNo); |
463 EXPECT_CALL(response_sender, Run(_)) | 466 EXPECT_CALL(response_sender, MockRun(_)) |
464 .WillOnce(Invoke(&response_expectation, | 467 .WillOnce(Invoke(&response_expectation, |
465 &EmptyResponseVerifier::Verify)); | 468 &EmptyResponseVerifier::Verify)); |
466 | 469 |
467 // Create method call; | 470 // Create method call; |
468 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 471 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
469 ibus::panel::kUpdateAuxiliaryTextMethod); | 472 ibus::panel::kUpdateAuxiliaryTextMethod); |
470 method_call.SetSerial(kSerialNo); | 473 method_call.SetSerial(kSerialNo); |
471 dbus::MessageWriter writer(&method_call); | 474 dbus::MessageWriter writer(&method_call); |
472 AppendStringAsIBusText(text, &writer); | 475 AppendStringAsIBusText(text, &writer); |
473 writer.AppendBool(kVisible); | 476 writer.AppendBool(kVisible); |
(...skipping 11 matching lines...) Expand all Loading... |
485 // Set expectations. | 488 // Set expectations. |
486 const uint32 kSerialNo = 1; | 489 const uint32 kSerialNo = 1; |
487 const std::string text = "Sample text"; | 490 const std::string text = "Sample text"; |
488 const uint32 kCursorPos = 4; | 491 const uint32 kCursorPos = 4; |
489 const bool kVisible = false; | 492 const bool kVisible = false; |
490 | 493 |
491 EXPECT_CALL(*candidate_window_handler_, | 494 EXPECT_CALL(*candidate_window_handler_, |
492 UpdatePreeditText(text, kCursorPos, kVisible)); | 495 UpdatePreeditText(text, kCursorPos, kVisible)); |
493 MockResponseSender response_sender; | 496 MockResponseSender response_sender; |
494 EmptyResponseVerifier response_expectation(kSerialNo); | 497 EmptyResponseVerifier response_expectation(kSerialNo); |
495 EXPECT_CALL(response_sender, Run(_)) | 498 EXPECT_CALL(response_sender, MockRun(_)) |
496 .WillOnce(Invoke(&response_expectation, | 499 .WillOnce(Invoke(&response_expectation, |
497 &EmptyResponseVerifier::Verify)); | 500 &EmptyResponseVerifier::Verify)); |
498 | 501 |
499 // Create method call; | 502 // Create method call; |
500 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 503 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
501 ibus::panel::kUpdatePreeditTextMethod); | 504 ibus::panel::kUpdatePreeditTextMethod); |
502 method_call.SetSerial(kSerialNo); | 505 method_call.SetSerial(kSerialNo); |
503 dbus::MessageWriter writer(&method_call); | 506 dbus::MessageWriter writer(&method_call); |
504 AppendStringAsIBusText(text, &writer); | 507 AppendStringAsIBusText(text, &writer); |
505 writer.AppendUint32(kCursorPos); | 508 writer.AppendUint32(kCursorPos); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 property->set_key(keys[i]); | 569 property->set_key(keys[i]); |
567 properties.push_back(property); | 570 properties.push_back(property); |
568 } | 571 } |
569 | 572 |
570 PropertyListVerifier response_expectation(keys); | 573 PropertyListVerifier response_expectation(keys); |
571 EXPECT_CALL(*property_handler_, RegisterProperties(_)) | 574 EXPECT_CALL(*property_handler_, RegisterProperties(_)) |
572 .WillOnce(Invoke(&response_expectation, | 575 .WillOnce(Invoke(&response_expectation, |
573 &PropertyListVerifier::Verify)); | 576 &PropertyListVerifier::Verify)); |
574 | 577 |
575 MockResponseSender response_sender; | 578 MockResponseSender response_sender; |
576 EXPECT_CALL(response_sender, Run(_)); | 579 EXPECT_CALL(response_sender, MockRun(_)); |
577 | 580 |
578 // Create method call; | 581 // Create method call; |
579 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 582 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
580 ibus::panel::kRegisterPropertiesMethod); | 583 ibus::panel::kRegisterPropertiesMethod); |
581 method_call.SetSerial(1UL); | 584 method_call.SetSerial(1UL); |
582 dbus::MessageWriter writer(&method_call); | 585 dbus::MessageWriter writer(&method_call); |
583 AppendIBusPropertyList(properties, &writer); | 586 AppendIBusPropertyList(properties, &writer); |
584 | 587 |
585 // Call exported function. | 588 // Call exported function. |
586 EXPECT_NE(method_callback_map_.find(ibus::panel::kRegisterPropertiesMethod), | 589 EXPECT_NE(method_callback_map_.find(ibus::panel::kRegisterPropertiesMethod), |
587 method_callback_map_.end()); | 590 method_callback_map_.end()); |
588 method_callback_map_[ibus::panel::kRegisterPropertiesMethod].Run( | 591 method_callback_map_[ibus::panel::kRegisterPropertiesMethod].Run( |
589 &method_call, | 592 &method_call, |
590 base::Bind(&MockResponseSender::Run, base::Unretained(&response_sender))); | 593 base::Bind(&MockResponseSender::Run, base::Unretained(&response_sender))); |
591 } | 594 } |
592 | 595 |
593 TEST_F(IBusPanelServiceTest, UpdatePropertyTest) { | 596 TEST_F(IBusPanelServiceTest, UpdatePropertyTest) { |
594 // Set expectations. | 597 // Set expectations. |
595 const char kKey[] = "key"; | 598 const char kKey[] = "key"; |
596 IBusProperty property; | 599 IBusProperty property; |
597 property.set_key(kKey); | 600 property.set_key(kKey); |
598 | 601 |
599 PropertyVerifier response_expectation(kKey); | 602 PropertyVerifier response_expectation(kKey); |
600 EXPECT_CALL(*property_handler_, UpdateProperty(_)) | 603 EXPECT_CALL(*property_handler_, UpdateProperty(_)) |
601 .WillOnce(Invoke(&response_expectation, &PropertyVerifier::Verify)); | 604 .WillOnce(Invoke(&response_expectation, &PropertyVerifier::Verify)); |
602 | 605 |
603 MockResponseSender response_sender; | 606 MockResponseSender response_sender; |
604 EXPECT_CALL(response_sender, Run(_)); | 607 EXPECT_CALL(response_sender, MockRun(_)); |
605 | 608 |
606 // Create method call; | 609 // Create method call; |
607 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 610 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
608 ibus::panel::kUpdatePropertyMethod); | 611 ibus::panel::kUpdatePropertyMethod); |
609 method_call.SetSerial(1UL); | 612 method_call.SetSerial(1UL); |
610 dbus::MessageWriter writer(&method_call); | 613 dbus::MessageWriter writer(&method_call); |
611 AppendIBusProperty(property, &writer); | 614 AppendIBusProperty(property, &writer); |
612 | 615 |
613 // Call exported function. | 616 // Call exported function. |
614 EXPECT_NE(method_callback_map_.find(ibus::panel::kUpdatePropertyMethod), | 617 EXPECT_NE(method_callback_map_.find(ibus::panel::kUpdatePropertyMethod), |
615 method_callback_map_.end()); | 618 method_callback_map_.end()); |
616 method_callback_map_[ibus::panel::kUpdatePropertyMethod].Run( | 619 method_callback_map_[ibus::panel::kUpdatePropertyMethod].Run( |
617 &method_call, | 620 &method_call, |
618 base::Bind(&MockResponseSender::Run, | 621 base::Bind(&MockResponseSender::Run, |
619 base::Unretained(&response_sender))); | 622 base::Unretained(&response_sender))); |
620 } | 623 } |
621 | 624 |
622 } // namespace chromeos | 625 } // namespace chromeos |
OLD | NEW |