diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-27 16:20:15 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-27 16:20:15 +0000 |
commit | 83a8d3a4b0066627911ded97dba095abe3110534 (patch) | |
tree | afa82912b3c715234fe3023cb6000c373a1c53b1 /chrome | |
parent | 60616fcf97a781ff6700a1d8e9acead5350069f2 (diff) | |
download | chromium_src-83a8d3a4b0066627911ded97dba095abe3110534.zip chromium_src-83a8d3a4b0066627911ded97dba095abe3110534.tar.gz chromium_src-83a8d3a4b0066627911ded97dba095abe3110534.tar.bz2 |
[SYNC] Tests to catch datatype manager behavior when datatype controller is busy when stop() is called.
BUG=61804
TEST=self
Review URL: http://codereview.chromium.org/6357018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72803 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/sync/glue/data_type_manager_impl_unittest.cc | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/chrome/browser/sync/glue/data_type_manager_impl_unittest.cc b/chrome/browser/sync/glue/data_type_manager_impl_unittest.cc index 81adfa0..a51748c 100644 --- a/chrome/browser/sync/glue/data_type_manager_impl_unittest.cc +++ b/chrome/browser/sync/glue/data_type_manager_impl_unittest.cc @@ -97,6 +97,20 @@ class DataTypeManagerImplTest : public testing::Test { WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); } + void SetBusyStartStopExpectations(DataTypeControllerMock* mock_dtc, + DataTypeController::State busy_state) { + InSequence seq; + EXPECT_CALL(*mock_dtc, state()). + WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); + EXPECT_CALL(*mock_dtc, Start(_)). + WillOnce(InvokeCallback((DataTypeController::OK))); + EXPECT_CALL(*mock_dtc, state()). + WillRepeatedly(Return(busy_state)); + EXPECT_CALL(*mock_dtc, Stop()).Times(1); + EXPECT_CALL(*mock_dtc, state()). + WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); + } + void SetNotUsedExpectations(DataTypeControllerMock* mock_dtc) { EXPECT_CALL(*mock_dtc, Start(_)).Times(0); EXPECT_CALL(*mock_dtc, Stop()).Times(0); @@ -160,6 +174,37 @@ TEST_F(DataTypeManagerImplTest, ConfigureOne) { EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); } +TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileStarting) { + DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); + SetBusyStartStopExpectations(bookmark_dtc, + DataTypeController::MODEL_STARTING); + controllers_[syncable::BOOKMARKS] = bookmark_dtc; + SetBackendExpectations(1); + DataTypeManagerImpl dtm(&backend_, controllers_); + types_.insert(syncable::BOOKMARKS); + SetConfigureStartExpectation(); + SetConfigureDoneExpectation(DataTypeManager::OK); + dtm.Configure(types_); + EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); + dtm.Stop(); + EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); +} + +TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileAssociating) { + DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); + SetBusyStartStopExpectations(bookmark_dtc, DataTypeController::ASSOCIATING); + controllers_[syncable::BOOKMARKS] = bookmark_dtc; + SetBackendExpectations(1); + DataTypeManagerImpl dtm(&backend_, controllers_); + types_.insert(syncable::BOOKMARKS); + SetConfigureStartExpectation(); + SetConfigureDoneExpectation(DataTypeManager::OK); + dtm.Configure(types_); + EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); + dtm.Stop(); + EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); +} + TEST_F(DataTypeManagerImplTest, OneWaitingForCrypto) { DataTypeControllerMock* password_dtc = MakePasswordDTC(); EXPECT_CALL(*password_dtc, state()). |