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

Unified Diff: base/ios/crb_protocol_observers_unittest.mm

Issue 1647803004: Move base to DEPS (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/ios/crb_protocol_observers.mm ('k') | base/ios/device_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/ios/crb_protocol_observers_unittest.mm
diff --git a/base/ios/crb_protocol_observers_unittest.mm b/base/ios/crb_protocol_observers_unittest.mm
deleted file mode 100644
index b8cf4231e4d3b64d4cbc21bef4fac21ce15d639a..0000000000000000000000000000000000000000
--- a/base/ios/crb_protocol_observers_unittest.mm
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "base/ios/crb_protocol_observers.h"
-#include "base/ios/weak_nsobject.h"
-#include "base/logging.h"
-#include "base/mac/scoped_nsautorelease_pool.h"
-#include "base/mac/scoped_nsobject.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "testing/gtest_mac.h"
-#include "testing/platform_test.h"
-
-@protocol TestObserver
-
-@required
-- (void)requiredMethod;
-- (void)reset;
-
-@optional
-- (void)optionalMethod;
-- (void)mutateByAddingObserver:(id<TestObserver>)observer;
-- (void)mutateByRemovingObserver:(id<TestObserver>)observer;
-- (void)nestedMutateByAddingObserver:(id<TestObserver>)observer;
-- (void)nestedMutateByRemovingObserver:(id<TestObserver>)observer;
-
-@end
-
-// Implements only the required methods in the TestObserver protocol.
-@interface TestPartialObserver : NSObject<TestObserver>
-@property(nonatomic, readonly) BOOL requiredMethodInvoked;
-@end
-
-// Implements all the methods in the TestObserver protocol.
-@interface TestCompleteObserver : TestPartialObserver<TestObserver>
-@property(nonatomic, readonly) BOOL optionalMethodInvoked;
-@end
-
-@interface TestMutateObserver : TestCompleteObserver
-- (instancetype)initWithObserver:(CRBProtocolObservers*)observer
- NS_DESIGNATED_INITIALIZER;
-- (instancetype)init NS_UNAVAILABLE;
-@end
-
-namespace {
-
-class CRBProtocolObserversTest : public PlatformTest {
- public:
- CRBProtocolObserversTest() {}
-
- protected:
- void SetUp() override {
- PlatformTest::SetUp();
-
- observers_.reset([[CRBProtocolObservers observersWithProtocol:
- @protocol(TestObserver)] retain]);
-
- partial_observer_.reset([[TestPartialObserver alloc] init]);
- EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-
- complete_observer_.reset([[TestCompleteObserver alloc] init]);
- EXPECT_FALSE([complete_observer_ requiredMethodInvoked]);
- EXPECT_FALSE([complete_observer_ optionalMethodInvoked]);
-
- mutate_observer_.reset(
- [[TestMutateObserver alloc] initWithObserver:observers_.get()]);
- EXPECT_FALSE([mutate_observer_ requiredMethodInvoked]);
- }
-
- base::scoped_nsobject<id> observers_;
- base::scoped_nsobject<TestPartialObserver> partial_observer_;
- base::scoped_nsobject<TestCompleteObserver> complete_observer_;
- base::scoped_nsobject<TestMutateObserver> mutate_observer_;
-};
-
-// Verifies basic functionality of -[CRBProtocolObservers addObserver:] and
-// -[CRBProtocolObservers removeObserver:].
-TEST_F(CRBProtocolObserversTest, AddRemoveObserver) {
- // Add an observer and verify that the CRBProtocolObservers instance forwards
- // an invocation to it.
- [observers_ addObserver:partial_observer_];
- [observers_ requiredMethod];
- EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-
- [partial_observer_ reset];
- EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-
- // Remove the observer and verify that the CRBProtocolObservers instance no
- // longer forwards an invocation to it.
- [observers_ removeObserver:partial_observer_];
- [observers_ requiredMethod];
- EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-}
-
-// Verifies that CRBProtocolObservers correctly forwards the invocation of a
-// required method in the protocol.
-TEST_F(CRBProtocolObserversTest, RequiredMethods) {
- [observers_ addObserver:partial_observer_];
- [observers_ addObserver:complete_observer_];
- [observers_ requiredMethod];
- EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
- EXPECT_TRUE([complete_observer_ requiredMethodInvoked]);
-}
-
-// Verifies that CRBProtocolObservers correctly forwards the invocation of an
-// optional method in the protocol.
-TEST_F(CRBProtocolObserversTest, OptionalMethods) {
- [observers_ addObserver:partial_observer_];
- [observers_ addObserver:complete_observer_];
- [observers_ optionalMethod];
- EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
- EXPECT_FALSE([complete_observer_ requiredMethodInvoked]);
- EXPECT_TRUE([complete_observer_ optionalMethodInvoked]);
-}
-
-// Verifies that CRBProtocolObservers only holds a weak reference to an
-// observer.
-TEST_F(CRBProtocolObserversTest, WeakReference) {
- base::WeakNSObject<TestPartialObserver> weak_observer(
- partial_observer_);
- EXPECT_TRUE(weak_observer);
-
- [observers_ addObserver:partial_observer_];
-
- {
- // Need an autorelease pool here, because
- // -[CRBProtocolObservers forwardInvocation:] creates a temporary
- // autoreleased array that holds all the observers.
- base::mac::ScopedNSAutoreleasePool pool;
- [observers_ requiredMethod];
- EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
- }
-
- partial_observer_.reset();
- EXPECT_FALSE(weak_observer.get());
-}
-
-// Verifies that an observer can safely remove itself as observer while being
-// notified.
-TEST_F(CRBProtocolObserversTest, SelfMutateObservers) {
- [observers_ addObserver:mutate_observer_];
- EXPECT_FALSE([observers_ empty]);
-
- [observers_ requiredMethod];
- EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
-
- [mutate_observer_ reset];
-
- [observers_ nestedMutateByRemovingObserver:mutate_observer_];
- EXPECT_FALSE([mutate_observer_ requiredMethodInvoked]);
-
- [observers_ addObserver:partial_observer_];
-
- [observers_ requiredMethod];
- EXPECT_FALSE([mutate_observer_ requiredMethodInvoked]);
- EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-
- [observers_ removeObserver:partial_observer_];
- EXPECT_TRUE([observers_ empty]);
-}
-
-// Verifies that - [CRBProtocolObservers addObserver:] and
-// - [CRBProtocolObservers removeObserver:] can be called while methods are
-// being forwarded.
-TEST_F(CRBProtocolObserversTest, MutateObservers) {
- // Indirectly add an observer while forwarding an observer method.
- [observers_ addObserver:mutate_observer_];
-
- [observers_ mutateByAddingObserver:partial_observer_];
- EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-
- // Check that methods are correctly forwared to the indirectly added observer.
- [mutate_observer_ reset];
- [observers_ requiredMethod];
- EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
- EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-
- [mutate_observer_ reset];
- [partial_observer_ reset];
-
- // Indirectly remove an observer while forwarding an observer method.
- [observers_ mutateByRemovingObserver:partial_observer_];
-
- // Check that method is not forwared to the indirectly removed observer.
- [observers_ requiredMethod];
- EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
- EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-}
-
-// Verifies that - [CRBProtocolObservers addObserver:] and
-// - [CRBProtocolObservers removeObserver:] can be called while methods are
-// being forwarded with a nested invocation depth > 0.
-TEST_F(CRBProtocolObserversTest, NestedMutateObservers) {
- // Indirectly add an observer while forwarding an observer method.
- [observers_ addObserver:mutate_observer_];
-
- [observers_ nestedMutateByAddingObserver:partial_observer_];
- EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-
- // Check that methods are correctly forwared to the indirectly added observer.
- [mutate_observer_ reset];
- [observers_ requiredMethod];
- EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
- EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-
- [mutate_observer_ reset];
- [partial_observer_ reset];
-
- // Indirectly remove an observer while forwarding an observer method.
- [observers_ nestedMutateByRemovingObserver:partial_observer_];
-
- // Check that method is not forwared to the indirectly removed observer.
- [observers_ requiredMethod];
- EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
- EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-}
-
-} // namespace
-
-@implementation TestPartialObserver {
- BOOL _requiredMethodInvoked;
-}
-
-- (BOOL)requiredMethodInvoked {
- return _requiredMethodInvoked;
-}
-
-- (void)requiredMethod {
- _requiredMethodInvoked = YES;
-}
-
-- (void)reset {
- _requiredMethodInvoked = NO;
-}
-
-@end
-
-@implementation TestCompleteObserver {
- BOOL _optionalMethodInvoked;
-}
-
-- (BOOL)optionalMethodInvoked {
- return _optionalMethodInvoked;
-}
-
-- (void)optionalMethod {
- _optionalMethodInvoked = YES;
-}
-
-- (void)reset {
- [super reset];
- _optionalMethodInvoked = NO;
-}
-
-@end
-
-@implementation TestMutateObserver {
- __weak id _observers;
-}
-
-- (instancetype)initWithObserver:(CRBProtocolObservers*)observers {
- self = [super init];
- if (self) {
- _observers = observers;
- }
- return self;
-}
-
-- (instancetype)init {
- NOTREACHED();
- return nil;
-}
-
-- (void)mutateByAddingObserver:(id<TestObserver>)observer {
- [_observers addObserver:observer];
-}
-
-- (void)mutateByRemovingObserver:(id<TestObserver>)observer {
- [_observers removeObserver:observer];
-}
-
-- (void)nestedMutateByAddingObserver:(id<TestObserver>)observer {
- [_observers mutateByAddingObserver:observer];
-}
-
-- (void)nestedMutateByRemovingObserver:(id<TestObserver>)observer {
- [_observers mutateByRemovingObserver:observer];
-}
-
-@end
« no previous file with comments | « base/ios/crb_protocol_observers.mm ('k') | base/ios/device_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698