コード例 #1
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_dump_playlists_with_resolution():
    obj = m3u8.M3U8(playlists.SIMPLE_PLAYLIST_WITH_RESOLUTION)

    expected = playlists.SIMPLE_PLAYLIST_WITH_RESOLUTION.strip().splitlines()

    assert expected == obj.dumps().strip().splitlines()
コード例 #2
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_keys_on_clear_playlist():
    obj = m3u8.M3U8(playlists.SIMPLE_PLAYLIST)

    assert len(obj.keys) == 1
    assert obj.keys[0] == None
コード例 #3
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_session_keys_on_clear_playlist():
    obj = m3u8.M3U8(playlists.SIMPLE_PLAYLIST)

    assert len(obj.session_keys) == 0
コード例 #4
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_cue_out_in_dumps():
    obj = m3u8.M3U8(playlists.CUE_OUT_NO_DURATION_PLAYLIST)

    result = obj.dumps()
    expected = '#EXT-X-CUE-IN\n'
    assert expected in result
コード例 #5
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_unknown_scte35_attribute():
    obj = m3u8.M3U8(playlists.CUE_OUT_INVALID_PLAYLIST)
    assert obj.segments[0].scte35 == None
    assert obj.segments[0].scte35_duration == None
コード例 #6
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_m3u8_unicode_method():
    obj = m3u8.M3U8(playlists.SIMPLE_PLAYLIST)

    result = unicode(obj).strip()
    expected = playlists.SIMPLE_PLAYLIST.strip()
    assert result == expected
コード例 #7
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_cue_out_cont_dumps():
    obj = m3u8.M3U8(playlists.CUE_OUT_PLAYLIST)

    result = obj.dumps()
    expected = '#EXT-X-CUE-OUT-CONT\n'
    assert expected in result
コード例 #8
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_should_dump_multiple_keys():
    obj = m3u8.M3U8(playlists.PLAYLIST_WITH_ENCRIPTED_SEGMENTS_AND_IV_WITH_MULTIPLE_KEYS)
    expected  = playlists.PLAYLIST_WITH_ENCRIPTED_SEGMENTS_AND_IV_WITH_MULTIPLE_KEYS.strip()

    assert expected == obj.dumps().strip()
コード例 #9
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_should_dump_program_datetime_and_discontinuity():
    obj = m3u8.M3U8(playlists.DISCONTINUITY_PLAYLIST_WITH_PROGRAM_DATE_TIME)
    expected  = playlists.DISCONTINUITY_PLAYLIST_WITH_PROGRAM_DATE_TIME.strip()

    assert expected == obj.dumps().strip()
コード例 #10
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_dump_should_work_for_playlists_using_byteranges():
    obj = m3u8.M3U8(playlists.PLAYLIST_USING_BYTERANGES)

    expected = playlists.PLAYLIST_USING_BYTERANGES.strip()

    assert expected == obj.dumps().strip()
コード例 #11
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_should_dump_with_endlist_tag():
    obj = m3u8.M3U8(playlists.SLIDING_WINDOW_PLAYLIST)
    obj.is_endlist= True

    assert '#EXT-X-ENDLIST' in obj.dumps().splitlines()
コード例 #12
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_dump_should_include_program_date_time():
    obj = m3u8.M3U8(playlists.SIMPLE_PLAYLIST_WITH_PROGRAM_DATE_TIME)

    assert "EXT-X-PROGRAM-DATE-TIME:2014-08-13T13:36:33+00:00" in obj.dumps().strip()
コード例 #13
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_dump_should_work_for_variant_playlists_with_iframe_playlists():
    obj = m3u8.M3U8(playlists.VARIANT_PLAYLIST_WITH_IFRAME_PLAYLISTS)

    expected = playlists.VARIANT_PLAYLIST_WITH_IFRAME_PLAYLISTS.strip()

    assert expected == obj.dumps().strip()
コード例 #14
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_dump_should_work_for_variant_streams():
    obj = m3u8.M3U8(playlists.VARIANT_PLAYLIST)

    expected = playlists.VARIANT_PLAYLIST.replace(', BANDWIDTH', ',BANDWIDTH').strip()

    assert expected == obj.dumps().strip()
コード例 #15
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_start_with_precise():
    obj = m3u8.M3U8(playlists.SIMPLE_PLAYLIST_WITH_START_PRECISE)
    assert obj.start.time_offset == 10.5
    assert obj.start.precise == 'YES'
    assert ext_x_start + ':TIME-OFFSET=10.5,PRECISE=YES\n' in obj.dumps()
コード例 #16
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_playlist_type_dumped_to_appropriate_m3u8_field():
    obj = m3u8.M3U8()
    obj.playlist_type = 'vod'
    result = obj.dumps()
    expected = '#EXTM3U\n#EXT-X-PLAYLIST-TYPE:VOD\n'
    assert result == expected
コード例 #17
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_should_dump_frame_rate():
    obj = m3u8.M3U8(playlists.VARIANT_PLAYLIST_WITH_FRAME_RATE)
    expected = playlists.VARIANT_PLAYLIST_WITH_FRAME_RATE.strip()

    assert expected == obj.dumps().strip()
コード例 #18
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_none_playlist_type_is_gracefully_ignored():
    obj = m3u8.M3U8()
    obj.playlist_type = None
    result = obj.dumps()
    expected = '#EXTM3U\n'
    assert result == expected
コード例 #19
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_cue_in_attribute():
    obj = m3u8.M3U8(playlists.CUE_OUT_WITH_DURATION_PLAYLIST)

    assert obj.segments[2].cue_in == True
コード例 #20
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_0_media_sequence_added_to_file():
    obj = m3u8.M3U8()
    obj.media_sequence = 0
    result = obj.dumps()
    expected = '#EXTM3U\n'
    assert result == expected
コード例 #21
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_cue_out_start_dumps():
    obj = m3u8.M3U8(playlists.CUE_OUT_WITH_DURATION_PLAYLIST)

    result = obj.dumps()
    expected = '#EXT-X-CUE-OUT:11.52\n'
    assert expected in result
コード例 #22
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_none_media_sequence_gracefully_ignored():
    obj = m3u8.M3U8()
    obj.media_sequence = None
    result = obj.dumps()
    expected = '#EXTM3U\n'
    assert result == expected
コード例 #23
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_elemental_scte35_attribute():
    obj = m3u8.M3U8(playlists.CUE_OUT_ELEMENTAL_PLAYLIST)
    segments = obj.segments
    assert segments[4].cue_out == True
    assert segments[9].cue_out == False
    assert segments[4].scte35 == '/DAlAAAAAAAAAP/wFAUAAAABf+//wpiQkv4ARKogAAEBAQAAQ6sodg=='
コード例 #24
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_map_uri_attribute():
    obj = m3u8.M3U8(playlists.MAP_URI_PLAYLIST)
    assert obj.segment_map['uri'] == "fileSequence0.mp4"
コード例 #25
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_cue_out_no_duration():
    obj = m3u8.M3U8(playlists.CUE_OUT_NO_DURATION_PLAYLIST)
    assert obj.segments[0].cue_out_start == True
    assert obj.segments[2].cue_in == True
コード例 #26
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_segment_map_uri_attribute_with_byterange():
    obj = m3u8.M3U8(playlists.MAP_URI_PLAYLIST_WITH_BYTERANGE)
    assert obj.segment_map['uri'] == "main.mp4"
コード例 #27
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_key_attribute_on_none():
    obj = m3u8.M3U8(playlists.SIMPLE_PLAYLIST)
    mock_parser_data(obj, {})

    assert len(obj.keys) == 0
コード例 #28
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_start_with_negative_offset():
    obj = m3u8.M3U8(playlists.SIMPLE_PLAYLIST_WITH_START_NEGATIVE_OFFSET)
    assert obj.start.time_offset == -2.0
    assert obj.start.precise is None
    assert ext_x_start + ':TIME-OFFSET=-2.0\n' in obj.dumps()
コード例 #29
0
ファイル: test_model.py プロジェクト: zhenghaogithub/m3u8
def test_session_keys_on_simple_encrypted_playlist():
    obj = m3u8.M3U8(playlists.PLAYLIST_WITH_SESSION_ENCRYPTED_SEGMENTS)

    assert len(obj.session_keys) == 1
    assert obj.session_keys[0].uri == "https://priv.example.com/key.php?r=52"
コード例 #30
0
ファイル: test_model.py プロジェクト: SpalkLtd/m3u8
def test_dumps_should_build_same_string():
    playlists_model = [playlists.PLAYLIST_WITH_NON_INTEGER_DURATION, playlists.PLAYLIST_WITH_ENCRIPTED_SEGMENTS_AND_IV]
    for playlist in playlists_model:
        obj = m3u8.M3U8(playlist)
        expected = playlist.replace(', IV', ',IV').strip()
        assert expected == obj.dumps().strip()