Chromium Code Reviews| Index: chromeos/components/tether/active_host_unittest.cc |
| diff --git a/chromeos/components/tether/active_host_unittest.cc b/chromeos/components/tether/active_host_unittest.cc |
| index c2981ff28efe0c5d100d7b815b829f1769bd2ef4..ee33b69b440b3c6e5c9100252f3f4d01c0df2d6f 100644 |
| --- a/chromeos/components/tether/active_host_unittest.cc |
| +++ b/chromeos/components/tether/active_host_unittest.cc |
| @@ -40,6 +40,24 @@ struct GetActiveHostResult { |
| } |
| }; |
| +class TestObserver : public ActiveHost::Observer { |
| + public: |
| + void OnActiveHostChanged( |
| + ActiveHost::ActiveHostStatus active_host_status, |
| + std::unique_ptr<cryptauth::RemoteDevice> active_host_device, |
| + const std::string& wifi_network_id) override { |
| + host_changed_updates_.push_back(GetActiveHostResult{ |
| + active_host_status, std::move(active_host_device), wifi_network_id}); |
| + } |
| + |
| + std::vector<GetActiveHostResult>& host_changed_updates() { |
| + return host_changed_updates_; |
| + } |
| + |
| + private: |
| + std::vector<GetActiveHostResult> host_changed_updates_; |
| +}; |
| + |
| } // namespace |
| class ActiveHostTest : public testing::Test { |
| @@ -56,6 +74,9 @@ class ActiveHostTest : public testing::Test { |
| ActiveHost::RegisterPrefs(test_pref_service_->registry()); |
| active_host_ = base::MakeUnique<ActiveHost>(fake_tether_host_fetcher_.get(), |
| test_pref_service_.get()); |
| + |
| + test_observer_ = base::WrapUnique(new TestObserver); |
| + active_host_->AddObserver(test_observer_.get()); |
| } |
| void OnActiveHostFetched(ActiveHost::ActiveHostStatus active_host_status, |
| @@ -84,6 +105,7 @@ class ActiveHostTest : public testing::Test { |
| std::unique_ptr<TestingPrefServiceSimple> test_pref_service_; |
| std::unique_ptr<FakeTetherHostFetcher> fake_tether_host_fetcher_; |
| + std::unique_ptr<TestObserver> test_observer_; |
| std::vector<GetActiveHostResult> get_active_host_results_; |
| @@ -172,6 +194,42 @@ TEST_F(ActiveHostTest, TestActiveHostChangesDuringFetch) { |
| get_active_host_results_[0]); |
| } |
| +TEST_F(ActiveHostTest, TestObserverCalls) { |
|
Jeremy Klein
2017/03/10 23:58:08
Can we also add a test which goes through the earl
Kyle Horimoto
2017/03/11 00:03:09
Done.
|
| + // Start as DISCONNECTED. |
| + EXPECT_FALSE(test_observer_->host_changed_updates().size()); |
|
Jeremy Klein
2017/03/10 23:58:08
Is EXPECT_FALSE the standard chrome practice for "
Kyle Horimoto
2017/03/11 00:03:09
Yeah - I don't really like it either :(
|
| + |
| + // Transition to CONNECTING. |
| + active_host_->SetActiveHostConnecting(test_devices_[0].GetDeviceId()); |
| + fake_tether_host_fetcher_->InvokePendingCallbacks(); |
| + EXPECT_EQ(1u, test_observer_->host_changed_updates().size()); |
| + EXPECT_EQ( |
| + (GetActiveHostResult{ActiveHost::ActiveHostStatus::CONNECTING, |
| + std::shared_ptr<cryptauth::RemoteDevice>( |
| + new cryptauth::RemoteDevice(test_devices_[0])), |
| + ""}), |
| + test_observer_->host_changed_updates()[0]); |
| + |
| + // Transition to CONNECTED. |
| + active_host_->SetActiveHostConnected(test_devices_[0].GetDeviceId(), |
| + "wifiNetworkId"); |
| + fake_tether_host_fetcher_->InvokePendingCallbacks(); |
| + EXPECT_EQ(2u, test_observer_->host_changed_updates().size()); |
| + EXPECT_EQ( |
| + (GetActiveHostResult{ActiveHost::ActiveHostStatus::CONNECTED, |
| + std::shared_ptr<cryptauth::RemoteDevice>( |
| + new cryptauth::RemoteDevice(test_devices_[0])), |
| + "wifiNetworkId"}), |
| + test_observer_->host_changed_updates()[1]); |
| + |
| + // Transition to DISCONNECTED. |
| + active_host_->SetActiveHostDisconnected(); |
| + fake_tether_host_fetcher_->InvokePendingCallbacks(); |
| + EXPECT_EQ(3u, test_observer_->host_changed_updates().size()); |
| + EXPECT_EQ((GetActiveHostResult{ActiveHost::ActiveHostStatus::DISCONNECTED, |
| + nullptr, ""}), |
| + test_observer_->host_changed_updates()[2]); |
| +} |
| + |
| } // namespace tether |
| } // namespace cryptauth |