Merge pull request #1790 from gazreese/ASVideoNode-delegate-superclass

[ASVideoNode] Ensure that both ASVideoNode and ASNetworkImageNode delegate methods are called
This commit is contained in:
Michael Schneider
2016-06-22 20:43:49 -07:00
committed by GitHub
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