[ASVideoNode] Ensure that both ASVideoNode and ASNetworkImageNode delegate methods are called for ASVideoNode observers

This commit is contained in:
Gareth Reese
2016-06-21 11:36:54 +01:00
parent 21d0f1e10d
commit 3fee0810d5
2 changed files with 25 additions and 1 deletions

View File

@@ -453,7 +453,9 @@ static NSString * const kStatus = @"status";
- (void)setDelegate:(id<ASVideoNodeDelegate>)delegate
{
[super setDelegate:delegate];
_delegate = delegate;
if (_delegate == nil) {
memset(&_delegateFlags, 0, sizeof(_delegateFlags));
} else {

View File

@@ -15,7 +15,7 @@
#import <AVFoundation/AVFoundation.h>
#import <AsyncDisplayKit/AsyncDisplayKit.h>
@interface ASVideoNodeTests : XCTestCase
@interface ASVideoNodeTests : XCTestCase <ASVideoNodeDelegate>
{
ASVideoNode *_videoNode;
AVURLAsset *_firstAsset;
@@ -25,10 +25,18 @@
}
@end
@interface ASNetworkImageNode () {
@public __weak id<ASNetworkImageNodeDelegate> _delegate;
}
@end
@interface ASVideoNode () {
ASDisplayNode *_playerNode;
AVPlayer *_player;
}
@property (atomic, readwrite) ASInterfaceState interfaceState;
@property (atomic, readonly) ASDisplayNode *spinner;
@property (atomic, readwrite) ASDisplayNode *playerNode;
@@ -405,4 +413,18 @@
XCTAssertNil(_videoNode.image);
}
- (void)testDelegateProperlySetForClassHierarchy
{
_videoNode.delegate = self;
XCTAssertTrue([_videoNode.delegate conformsToProtocol:@protocol(ASVideoNodeDelegate)]);
XCTAssertTrue([_videoNode.delegate conformsToProtocol:@protocol(ASNetworkImageNodeDelegate)]);
XCTAssertTrue([((ASNetworkImageNode*)_videoNode).delegate conformsToProtocol:@protocol(ASNetworkImageNodeDelegate)]);
XCTAssertTrue([((ASNetworkImageNode*)_videoNode)->_delegate conformsToProtocol:@protocol(ASNetworkImageNodeDelegate)]);
XCTAssertEqual(_videoNode.delegate, self);
XCTAssertEqual(((ASNetworkImageNode*)_videoNode).delegate, self);
XCTAssertEqual(((ASNetworkImageNode*)_videoNode)->_delegate, self);
}
@end