| 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 // This class defines tests that implementations of Invalidator should pass in | 5 // This class defines tests that implementations of Invalidator should pass in |
| 6 // order to be conformant. Here's how you use it to test your implementation. | 6 // order to be conformant. Here's how you use it to test your implementation. |
| 7 // | 7 // |
| 8 // Say your class is called MyInvalidator. Then you need to define a class | 8 // Say your class is called MyInvalidator. Then you need to define a class |
| 9 // called MyInvalidatorTestDelegate in my_sync_notifier_unittest.cc like this: | 9 // called MyInvalidatorTestDelegate in my_sync_notifier_unittest.cc like this: |
| 10 // | 10 // |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 | 276 |
| 277 EXPECT_EQ(0, handler3.GetInvalidationCount()); | 277 EXPECT_EQ(0, handler3.GetInvalidationCount()); |
| 278 EXPECT_EQ(0, handler4.GetInvalidationCount()); | 278 EXPECT_EQ(0, handler4.GetInvalidationCount()); |
| 279 } | 279 } |
| 280 | 280 |
| 281 this->delegate_.TriggerOnInvalidatorStateChange(TRANSIENT_INVALIDATION_ERROR); | 281 this->delegate_.TriggerOnInvalidatorStateChange(TRANSIENT_INVALIDATION_ERROR); |
| 282 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler1.GetInvalidatorState()); | 282 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler1.GetInvalidatorState()); |
| 283 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler2.GetInvalidatorState()); | 283 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler2.GetInvalidatorState()); |
| 284 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler3.GetInvalidatorState()); | 284 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler3.GetInvalidatorState()); |
| 285 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler4.GetInvalidatorState()); | 285 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler4.GetInvalidatorState()); |
| 286 |
| 287 invalidator->UnregisterHandler(&handler3); |
| 288 invalidator->UnregisterHandler(&handler2); |
| 289 invalidator->UnregisterHandler(&handler1); |
| 286 } | 290 } |
| 287 | 291 |
| 288 // Make sure that passing an empty set to UpdateRegisteredIds clears the | 292 // Make sure that passing an empty set to UpdateRegisteredIds clears the |
| 289 // corresponding entries for the handler. | 293 // corresponding entries for the handler. |
| 290 TYPED_TEST_P(InvalidatorTest, EmptySetUnregisters) { | 294 TYPED_TEST_P(InvalidatorTest, EmptySetUnregisters) { |
| 291 Invalidator* const invalidator = this->CreateAndInitializeInvalidator(); | 295 Invalidator* const invalidator = this->CreateAndInitializeInvalidator(); |
| 292 | 296 |
| 293 FakeInvalidationHandler handler1; | 297 FakeInvalidationHandler handler1; |
| 294 | 298 |
| 295 // Control observer. | 299 // Control observer. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 325 states[this->id2].payload = "2"; | 329 states[this->id2].payload = "2"; |
| 326 states[this->id3].payload = "3"; | 330 states[this->id3].payload = "3"; |
| 327 this->delegate_.TriggerOnIncomingInvalidation(states, REMOTE_INVALIDATION); | 331 this->delegate_.TriggerOnIncomingInvalidation(states, REMOTE_INVALIDATION); |
| 328 EXPECT_EQ(0, handler1.GetInvalidationCount()); | 332 EXPECT_EQ(0, handler1.GetInvalidationCount()); |
| 329 EXPECT_EQ(1, handler2.GetInvalidationCount()); | 333 EXPECT_EQ(1, handler2.GetInvalidationCount()); |
| 330 } | 334 } |
| 331 | 335 |
| 332 this->delegate_.TriggerOnInvalidatorStateChange(TRANSIENT_INVALIDATION_ERROR); | 336 this->delegate_.TriggerOnInvalidatorStateChange(TRANSIENT_INVALIDATION_ERROR); |
| 333 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler1.GetInvalidatorState()); | 337 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler1.GetInvalidatorState()); |
| 334 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler2.GetInvalidatorState()); | 338 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler2.GetInvalidatorState()); |
| 339 |
| 340 invalidator->UnregisterHandler(&handler2); |
| 341 invalidator->UnregisterHandler(&handler1); |
| 335 } | 342 } |
| 336 | 343 |
| 337 namespace internal { | 344 namespace internal { |
| 338 | 345 |
| 339 // A FakeInvalidationHandler that is "bound" to a specific | 346 // A FakeInvalidationHandler that is "bound" to a specific |
| 340 // Invalidator. This is for cross-referencing state information with | 347 // Invalidator. This is for cross-referencing state information with |
| 341 // the bound Invalidator. | 348 // the bound Invalidator. |
| 342 class BoundFakeInvalidationHandler : public FakeInvalidationHandler { | 349 class BoundFakeInvalidationHandler : public FakeInvalidationHandler { |
| 343 public: | 350 public: |
| 344 explicit BoundFakeInvalidationHandler(const Invalidator& invalidator); | 351 explicit BoundFakeInvalidationHandler(const Invalidator& invalidator); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 367 internal::BoundFakeInvalidationHandler handler(*invalidator); | 374 internal::BoundFakeInvalidationHandler handler(*invalidator); |
| 368 invalidator->RegisterHandler(&handler); | 375 invalidator->RegisterHandler(&handler); |
| 369 | 376 |
| 370 this->delegate_.TriggerOnInvalidatorStateChange(INVALIDATIONS_ENABLED); | 377 this->delegate_.TriggerOnInvalidatorStateChange(INVALIDATIONS_ENABLED); |
| 371 EXPECT_EQ(INVALIDATIONS_ENABLED, handler.GetInvalidatorState()); | 378 EXPECT_EQ(INVALIDATIONS_ENABLED, handler.GetInvalidatorState()); |
| 372 EXPECT_EQ(INVALIDATIONS_ENABLED, handler.GetLastRetrievedState()); | 379 EXPECT_EQ(INVALIDATIONS_ENABLED, handler.GetLastRetrievedState()); |
| 373 | 380 |
| 374 this->delegate_.TriggerOnInvalidatorStateChange(TRANSIENT_INVALIDATION_ERROR); | 381 this->delegate_.TriggerOnInvalidatorStateChange(TRANSIENT_INVALIDATION_ERROR); |
| 375 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler.GetInvalidatorState()); | 382 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler.GetInvalidatorState()); |
| 376 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler.GetLastRetrievedState()); | 383 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler.GetLastRetrievedState()); |
| 384 |
| 385 invalidator->UnregisterHandler(&handler); |
| 377 } | 386 } |
| 378 | 387 |
| 379 // Initialize the invalidator with no bootstrap data. Call the deprecated | 388 // Initialize the invalidator with no bootstrap data. Call the deprecated |
| 380 // state setter function a number of times, destroying and re-creating the | 389 // state setter function a number of times, destroying and re-creating the |
| 381 // invalidator in between. Only the first one should take effect (i.e., | 390 // invalidator in between. Only the first one should take effect (i.e., |
| 382 // migration of bootstrap data should only happen once) | 391 // migration of bootstrap data should only happen once) |
| 383 TYPED_TEST_P(InvalidatorTest, MigrateState) { | 392 TYPED_TEST_P(InvalidatorTest, MigrateState) { |
| 384 if (!this->delegate_.InvalidatorHandlesDeprecatedState()) { | 393 if (!this->delegate_.InvalidatorHandlesDeprecatedState()) { |
| 385 DLOG(INFO) << "This Invalidator doesn't handle deprecated state; " | 394 DLOG(INFO) << "This Invalidator doesn't handle deprecated state; " |
| 386 << "skipping"; | 395 << "skipping"; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 412 EXPECT_EQ("fake_state", this->fake_tracker_.GetBootstrapData()); | 421 EXPECT_EQ("fake_state", this->fake_tracker_.GetBootstrapData()); |
| 413 } | 422 } |
| 414 | 423 |
| 415 REGISTER_TYPED_TEST_CASE_P(InvalidatorTest, | 424 REGISTER_TYPED_TEST_CASE_P(InvalidatorTest, |
| 416 Basic, MultipleHandlers, EmptySetUnregisters, | 425 Basic, MultipleHandlers, EmptySetUnregisters, |
| 417 GetInvalidatorStateAlwaysCurrent, MigrateState); | 426 GetInvalidatorStateAlwaysCurrent, MigrateState); |
| 418 | 427 |
| 419 } // namespace syncer | 428 } // namespace syncer |
| 420 | 429 |
| 421 #endif // SYNC_NOTIFIER_INVALIDATOR_TEST_TEMPLATE_H_ | 430 #endif // SYNC_NOTIFIER_INVALIDATOR_TEST_TEMPLATE_H_ |
| OLD | NEW |