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 |