Skip to content

Commit 7753b15

Browse files
committed
[Test] Add unit tests for X-MAP and FRAME-RATE
1 parent ae39e36 commit 7753b15

2 files changed

Lines changed: 36 additions & 19 deletions

File tree

M3U8KitTests/M3U8KitTests.m

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
@interface M3U8KitTests : XCTestCase
1414

1515
@property (nonatomic) StringExample *example;
16+
@property (nonatomic) M3U8PlaylistModel *playList;
17+
18+
@property (nonatomic) M3U8PlaylistModel *masterList;
1619

1720
@end
1821

@@ -23,6 +26,22 @@ - (void)setUp {
2326
// Put setup code here. This method is called before the invocation of each test method in the class.
2427

2528
_example = [[StringExample alloc] init];
29+
30+
NSURL *baseURL = [NSURL URLWithString:@"https://example.m3u8kit/9764a7a5vodtransgzp1252524126/953e2ef85285890782612785655/drm/"];
31+
NSError *error = nil;
32+
_playList = [[M3U8PlaylistModel alloc]
33+
initWithString:_example.m3u8Playlist
34+
baseURL:baseURL
35+
error:&error];
36+
XCTAssertNil(error);
37+
38+
baseURL = [NSURL URLWithString:@"https://hls.ted.com"];
39+
NSError *error1 = nil;
40+
_masterList = [[M3U8PlaylistModel alloc]
41+
initWithString:_example.m3u8Master
42+
baseURL:baseURL
43+
error:&error1];
44+
XCTAssertNil(error1);
2645
}
2746

2847
- (void)tearDown {
@@ -43,27 +62,13 @@ - (void)testLoadURLAsynchronously {
4362
}
4463

4564
- (void)testMasterM3U {
46-
NSURL *baseURL = [NSURL URLWithString:@"https://hls.ted.com"];
47-
NSError *error = nil;
48-
M3U8PlaylistModel *playList = [[M3U8PlaylistModel alloc]
49-
initWithString:_example.m3u8Master
50-
baseURL:baseURL
51-
error:&error];
52-
NSLog(@"%@", playList);
53-
NSArray *codecs = [playList.masterPlaylist.xStreamList xStreamInfAtIndex:0].codecs;
65+
NSArray *codecs = [_masterList.masterPlaylist.xStreamList xStreamInfAtIndex:0].codecs;
5466
XCTAssert([codecs[0] isEqualToString:@"avc1.42c01e"]);
5567
XCTAssert([codecs[1] isEqualToString:@"mp4a.40.2"]);
56-
XCTAssertNil(error);
5768
}
5869

5970
- (void)testPlaylistM3U {
60-
NSURL *baseURL = [NSURL URLWithString:@"https://example.m3u8kit/9764a7a5vodtransgzp1252524126/953e2ef85285890782612785655/drm/"];
61-
NSError *error = nil;
62-
M3U8PlaylistModel *playList = [[M3U8PlaylistModel alloc]
63-
initWithString:_example.m3u8Playlist
64-
baseURL:baseURL
65-
error:&error];
66-
M3U8SegmentInfoList *segments = playList.mainMediaPl.segmentList;
71+
M3U8SegmentInfoList *segments = _playList.mainMediaPl.segmentList;
6772
XCTAssertEqual(segments.count, 23);
6873

6974
M3U8SegmentInfo *segment0 = [segments segmentInfoAtIndex:0];
@@ -73,8 +78,19 @@ - (void)testPlaylistM3U {
7378
M3U8SegmentInfo *segment1 = [segments segmentInfoAtIndex:1];
7479
XCTAssertNil(segment1.additionalParameters);
7580
XCTAssertEqual(segment1.duration, 2.0);
76-
77-
XCTAssertNil(error);
81+
}
82+
83+
- (void)testParseXMap {
84+
M3U8ExtXMap *xMap = _playList.mainMediaPl.xMap;
85+
XCTAssertEqualObjects(xMap.URI.absoluteString, @"https://example.m3u8kit/xMap/init.mp4");
86+
XCTAssertEqual(xMap.byteRange.length, 7355608);
87+
XCTAssertEqual(xMap.byteRange.offset, 666);
88+
}
89+
90+
- (void)testParseFrameRate {
91+
M3U8MasterPlaylist *master = _masterList.masterPlaylist;
92+
M3U8ExtXStreamInf *info = master.xStreamList.firstStreamInf;
93+
XCTAssertEqual(info.frameRate, 7355608.0);
7894
}
7995

8096
- (void)testPerformanceExample {

M3U8KitTests/StringExample.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ - (NSString *)m3u8Playlist {
1616
#EXT-X-VERSION:3\n\
1717
#EXT-X-TARGETDURATION:11\n\
1818
#EXT-X-MEDIA-SEQUENCE:0\n\
19+
#EXT-X-MAP:URI=\"https://example.m3u8kit/xMap/init.mp4\",BYTERANGE=7355608@666\n\
1920
#EXT-X-KEY:METHOD=AES-128,URI=\"https://example.m3u8kit/get_video_key.php?edk=CiA61uBk9j6jp9V5Rs1LFLMDZmfgnepZhtsOyA1VJc8%2FwxCO08TAChiaoOvUBCokYjRhNjFiNTgtMmVhNy00OWYxLgwZGMtZTE0NTIyODc5YWIy&fileId=5285890782612785655&keySource=VodBuildInKMS\",IV=0x00000000000000000000000000000000\n\
2021
#EXTINF:2.000000 logo=\"someURI/target.png\" tvg-id=\"Rotana Cinema\" tvg-country=\"SA\" tvg-language=\"Arabic\" tvg-logo=\"tvgURI/logo.png\",\n\
2122
#EXT-X-BYTERANGE:3008@940\n\
@@ -94,7 +95,7 @@ - (NSString *)m3u8Master {
9495
@"#EXTM3U\n\
9596
#EXT-X-VERSION:4\n\
9697
#EXT-X-SESSION-KEY:METHOD=SAMPLE-AES,URI=\"skd://AZSkNGRhODQtMjE3My00ZDIdSDFEzN2QtYzE1YTczMTRjZjkw\",KEYFORMAT=\"com.apple.streamingkeydelivery\"\n\
97-
#EXT-X-STREAM-INF:AUDIO=\"600k\",BANDWIDTH=915685,PROGRAM-ID=1,CODECS=\"avc1.42c01e,mp4a.40.2\",RESOLUTION=640x360,SUBTITLES=\"subs\"\n\
98+
#EXT-X-STREAM-INF:AUDIO=\"600k\",BANDWIDTH=915685,PROGRAM-ID=1,CODECS=\"avc1.42c01e,mp4a.40.2\",RESOLUTION=640x360,SUBTITLES=\"subs\",FRAME-RATE=7355608\n\
9899
http://hls.ted.com/talks/769/video/600k.m3u8?sponsor=Ripple\n\
99100
#EXT-X-STREAM-INF:AUDIO=\"600k\",BANDWIDTH=131499,PROGRAM-ID=1,CODECS=\"avc1.42c00c,mp4a.40.2\",RESOLUTION=320x180,SUBTITLES=\"subs\"\n\
100101
/talks/769/video/64k.m3u8?sponsor=Ripple\n\

0 commit comments

Comments
 (0)