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

Side by Side Diff: device/bluetooth/bluetooth_adapter_unittest.cc

Issue 1884033002: Implement BluetoothTestBlueZ and enable some LE tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "device/bluetooth/bluetooth_adapter.h" 5 #include "device/bluetooth/bluetooth_adapter.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/run_loop.h" 15 #include "base/run_loop.h"
16 #include "build/build_config.h" 16 #include "build/build_config.h"
17 #include "device/bluetooth/bluetooth_device.h" 17 #include "device/bluetooth/bluetooth_device.h"
18 #include "device/bluetooth/bluetooth_discovery_session.h" 18 #include "device/bluetooth/bluetooth_discovery_session.h"
19 #include "device/bluetooth/test/bluetooth_test.h" 19 #include "device/bluetooth/test/bluetooth_test.h"
20 #include "device/bluetooth/test/test_bluetooth_adapter_observer.h" 20 #include "device/bluetooth/test/test_bluetooth_adapter_observer.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 22
23 #if defined(OS_ANDROID) 23 #if defined(OS_ANDROID)
24 #include "device/bluetooth/test/bluetooth_test_android.h" 24 #include "device/bluetooth/test/bluetooth_test_android.h"
25 #elif defined(OS_MACOSX) 25 #elif defined(OS_MACOSX)
26 #include "device/bluetooth/test/bluetooth_test_mac.h" 26 #include "device/bluetooth/test/bluetooth_test_mac.h"
27 #elif defined(OS_WIN) 27 #elif defined(OS_WIN)
28 #include "device/bluetooth/test/bluetooth_test_win.h" 28 #include "device/bluetooth/test/bluetooth_test_win.h"
29 #elif defined(OS_CHROMEOS) || defined(OS_LINUX)
30 #include "device/bluetooth/test/bluetooth_test_bluez.h"
29 #endif 31 #endif
30 32
31 using device::BluetoothDevice; 33 using device::BluetoothDevice;
32 34
33 namespace device { 35 namespace device {
34 36
35 class TestBluetoothAdapter : public BluetoothAdapter { 37 class TestBluetoothAdapter : public BluetoothAdapter {
36 public: 38 public:
37 TestBluetoothAdapter() { 39 TestBluetoothAdapter() {
38 } 40 }
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 resulting_uuids.end()); 413 resulting_uuids.end());
412 414
413 resulting_filter = adapter->GetMergedDiscoveryFilterMasked(df); 415 resulting_filter = adapter->GetMergedDiscoveryFilterMasked(df);
414 EXPECT_EQ(BluetoothDiscoveryFilter::Transport::TRANSPORT_DUAL, 416 EXPECT_EQ(BluetoothDiscoveryFilter::Transport::TRANSPORT_DUAL,
415 resulting_filter->GetTransport()); 417 resulting_filter->GetTransport());
416 418
417 adapter->CleanupSessions(); 419 adapter->CleanupSessions();
418 } 420 }
419 421
420 // TODO(scheib): Enable BluetoothTest fixture tests on all platforms. 422 // TODO(scheib): Enable BluetoothTest fixture tests on all platforms.
421 #if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
422 TEST_F(BluetoothTest, ConstructDefaultAdapter) { 423 TEST_F(BluetoothTest, ConstructDefaultAdapter) {
423 InitWithDefaultAdapter(); 424 InitWithDefaultAdapter();
scheib 2016/04/15 19:44:44 Skip brining up this test, see below...
rkc 2016/04/15 20:26:06 Done.
424 if (!adapter_->IsPresent()) { 425 if (!adapter_->IsPresent()) {
425 LOG(WARNING) << "Bluetooth adapter not present; skipping unit test."; 426 LOG(WARNING) << "Bluetooth adapter not present; skipping unit test.";
426 return; 427 return;
427 } 428 }
428 EXPECT_GT(adapter_->GetAddress().length(), 0u); 429 EXPECT_GT(adapter_->GetAddress().length(), 0u);
429 EXPECT_GT(adapter_->GetName().length(), 0u); 430 EXPECT_GT(adapter_->GetName().length(), 0u);
430 EXPECT_TRUE(adapter_->IsPresent()); 431 EXPECT_TRUE(adapter_->IsPresent());
431 // Don't know on test machines if adapter will be powered or not, but 432 // Don't know on test machines if adapter will be powered or not, but
432 // the call should be safe to make and consistent. 433 // the call should be safe to make and consistent.
433 EXPECT_EQ(adapter_->IsPowered(), adapter_->IsPowered()); 434 EXPECT_EQ(adapter_->IsPowered(), adapter_->IsPowered());
434 EXPECT_FALSE(adapter_->IsDiscoverable()); 435 EXPECT_FALSE(adapter_->IsDiscoverable());
435 EXPECT_FALSE(adapter_->IsDiscovering()); 436 EXPECT_FALSE(adapter_->IsDiscovering());
436 } 437 }
437 #endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
438 438
439 // TODO(scheib): Enable BluetoothTest fixture tests on all platforms. 439 // TODO(scheib): Enable BluetoothTest fixture tests on all platforms.
440 #if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN) 440 #if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
441 TEST_F(BluetoothTest, ConstructWithoutDefaultAdapter) { 441 TEST_F(BluetoothTest, ConstructWithoutDefaultAdapter) {
442 InitWithoutDefaultAdapter(); 442 InitWithoutDefaultAdapter();
443 EXPECT_EQ(adapter_->GetAddress(), ""); 443 EXPECT_EQ(adapter_->GetAddress(), "");
444 EXPECT_EQ(adapter_->GetName(), ""); 444 EXPECT_EQ(adapter_->GetName(), "");
445 EXPECT_FALSE(adapter_->IsPresent()); 445 EXPECT_FALSE(adapter_->IsPresent());
446 EXPECT_FALSE(adapter_->IsPowered()); 446 EXPECT_FALSE(adapter_->IsPowered());
447 EXPECT_FALSE(adapter_->IsDiscoverable()); 447 EXPECT_FALSE(adapter_->IsDiscoverable());
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 return; 540 return;
541 } 541 }
542 542
543 StartLowEnergyDiscoverySessionExpectedToFail(); 543 StartLowEnergyDiscoverySessionExpectedToFail();
544 544
545 EXPECT_EQ(0, callback_count_); 545 EXPECT_EQ(0, callback_count_);
546 EXPECT_EQ(1, error_callback_count_); 546 EXPECT_EQ(1, error_callback_count_);
547 } 547 }
548 #endif // defined(OS_ANDROID) || defined(OS_MACOSX) 548 #endif // defined(OS_ANDROID) || defined(OS_MACOSX)
549 549
550 #if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
551 // Discovers a device. 550 // Discovers a device.
552 TEST_F(BluetoothTest, DiscoverLowEnergyDevice) { 551 TEST_F(BluetoothTest, DiscoverLowEnergyDevice) {
553 if (!PlatformSupportsLowEnergy()) { 552 if (!PlatformSupportsLowEnergy()) {
554 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; 553 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
555 return; 554 return;
556 } 555 }
557 InitWithFakeAdapter(); 556 InitWithFakeAdapter();
558 TestBluetoothAdapterObserver observer(adapter_); 557 TestBluetoothAdapterObserver observer(adapter_);
559 558
560 // Start discovery and find a device. 559 // Start discovery and find a device.
561 StartLowEnergyDiscoverySession(); 560 StartLowEnergyDiscoverySession();
562 DiscoverLowEnergyDevice(1); 561 DiscoverLowEnergyDevice(1);
563 EXPECT_EQ(1, observer.device_added_count()); 562 EXPECT_EQ(1, observer.device_added_count());
564 BluetoothDevice* device = adapter_->GetDevice(observer.last_device_address()); 563 BluetoothDevice* device = adapter_->GetDevice(observer.last_device_address());
565 EXPECT_TRUE(device); 564 EXPECT_TRUE(device);
566 } 565 }
567 #endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
568 566
569 #if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
570 // Discovers the same device multiple times. 567 // Discovers the same device multiple times.
571 TEST_F(BluetoothTest, DiscoverLowEnergyDeviceTwice) { 568 TEST_F(BluetoothTest, DiscoverLowEnergyDeviceTwice) {
572 if (!PlatformSupportsLowEnergy()) { 569 if (!PlatformSupportsLowEnergy()) {
573 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; 570 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
574 return; 571 return;
575 } 572 }
576 InitWithFakeAdapter(); 573 InitWithFakeAdapter();
577 TestBluetoothAdapterObserver observer(adapter_); 574 TestBluetoothAdapterObserver observer(adapter_);
578 575
579 // Start discovery and find a device. 576 // Start discovery and find a device.
580 StartLowEnergyDiscoverySession(); 577 StartLowEnergyDiscoverySession();
581 DiscoverLowEnergyDevice(1); 578 DiscoverLowEnergyDevice(1);
582 EXPECT_EQ(1, observer.device_added_count()); 579 EXPECT_EQ(1, observer.device_added_count());
583 BluetoothDevice* device = adapter_->GetDevice(observer.last_device_address()); 580 BluetoothDevice* device = adapter_->GetDevice(observer.last_device_address());
584 EXPECT_TRUE(device); 581 EXPECT_TRUE(device);
585 582
586 // Find the same device again. This should not create a new device object. 583 // Find the same device again. This should not create a new device object.
587 observer.Reset(); 584 observer.Reset();
588 DiscoverLowEnergyDevice(1); 585 DiscoverLowEnergyDevice(1);
589 base::RunLoop().RunUntilIdle(); 586 base::RunLoop().RunUntilIdle();
590 EXPECT_EQ(0, observer.device_added_count()); 587 EXPECT_EQ(0, observer.device_added_count());
591 EXPECT_EQ(1u, adapter_->GetDevices().size()); 588 EXPECT_EQ(1u, adapter_->GetDevices().size());
592 } 589 }
593 #endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
594 590
595 #if defined(OS_ANDROID) || defined(OS_MACOSX) 591 #if defined(OS_ANDROID) || defined(OS_MACOSX)
596 // Discovers a device, and then again with new Service UUIDs. 592 // Discovers a device, and then again with new Service UUIDs.
597 TEST_F(BluetoothTest, DiscoverLowEnergyDeviceWithUpdatedUUIDs) { 593 TEST_F(BluetoothTest, DiscoverLowEnergyDeviceWithUpdatedUUIDs) {
598 if (!PlatformSupportsLowEnergy()) { 594 if (!PlatformSupportsLowEnergy()) {
599 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; 595 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
600 return; 596 return;
601 } 597 }
602 InitWithFakeAdapter(); 598 InitWithFakeAdapter();
603 TestBluetoothAdapterObserver observer(adapter_); 599 TestBluetoothAdapterObserver observer(adapter_);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 #else 632 #else
637 EXPECT_EQ(0, observer.device_changed_count()); 633 EXPECT_EQ(0, observer.device_changed_count());
638 #endif 634 #endif
639 EXPECT_EQ(1u, adapter_->GetDevices().size()); 635 EXPECT_EQ(1u, adapter_->GetDevices().size());
640 636
641 // Expect all UUIDs: 637 // Expect all UUIDs:
642 EXPECT_EQ(4u, device->GetUUIDs().size()); 638 EXPECT_EQ(4u, device->GetUUIDs().size());
643 } 639 }
644 #endif // defined(OS_ANDROID) || defined(OS_MACOSX) 640 #endif // defined(OS_ANDROID) || defined(OS_MACOSX)
645 641
646 #if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
647 // Discovers multiple devices when addresses vary. 642 // Discovers multiple devices when addresses vary.
648 TEST_F(BluetoothTest, DiscoverMultipleLowEnergyDevices) { 643 TEST_F(BluetoothTest, DiscoverMultipleLowEnergyDevices) {
649 if (!PlatformSupportsLowEnergy()) { 644 if (!PlatformSupportsLowEnergy()) {
650 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; 645 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
651 return; 646 return;
652 } 647 }
653 InitWithFakeAdapter(); 648 InitWithFakeAdapter();
654 TestBluetoothAdapterObserver observer(adapter_); 649 TestBluetoothAdapterObserver observer(adapter_);
655 650
656 // Start discovery and find a device. 651 // Start discovery and find a device.
657 StartLowEnergyDiscoverySession(); 652 StartLowEnergyDiscoverySession();
658 DiscoverLowEnergyDevice(1); 653 DiscoverLowEnergyDevice(1);
659 DiscoverLowEnergyDevice(4); 654 DiscoverLowEnergyDevice(4);
660 EXPECT_EQ(2, observer.device_added_count()); 655 EXPECT_EQ(2, observer.device_added_count());
661 EXPECT_EQ(2u, adapter_->GetDevices().size()); 656 EXPECT_EQ(2u, adapter_->GetDevices().size());
662 } 657 }
663 #endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
664 658
665 #if defined(OS_ANDROID) 659 #if defined(OS_ANDROID)
666 TEST_F(BluetoothTest, TogglePowerFakeAdapter) { 660 TEST_F(BluetoothTest, TogglePowerFakeAdapter) {
667 InitWithFakeAdapter(); 661 InitWithFakeAdapter();
668 TestBluetoothAdapterObserver observer(adapter_); 662 TestBluetoothAdapterObserver observer(adapter_);
669 663
670 ASSERT_TRUE(adapter_->IsPresent()); 664 ASSERT_TRUE(adapter_->IsPresent());
671 ASSERT_TRUE(adapter_->IsPowered()); 665 ASSERT_TRUE(adapter_->IsPowered());
672 EXPECT_EQ(0, observer.powered_changed_count()); 666 EXPECT_EQ(0, observer.powered_changed_count());
673 667
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 StartLowEnergyDiscoverySession(); 708 StartLowEnergyDiscoverySession();
715 EXPECT_EQ(1, callback_count_); 709 EXPECT_EQ(1, callback_count_);
716 EXPECT_EQ(0, error_callback_count_); 710 EXPECT_EQ(0, error_callback_count_);
717 EXPECT_TRUE(adapter_->IsDiscovering()); 711 EXPECT_TRUE(adapter_->IsDiscovering());
718 ASSERT_EQ((size_t)1, discovery_sessions_.size()); 712 ASSERT_EQ((size_t)1, discovery_sessions_.size());
719 EXPECT_TRUE(discovery_sessions_[0]->IsActive()); 713 EXPECT_TRUE(discovery_sessions_[0]->IsActive());
720 } 714 }
721 #endif // defined(OS_ANDROID) 715 #endif // defined(OS_ANDROID)
722 716
723 } // namespace device 717 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698