122 lines
3.6 KiB
Python
122 lines
3.6 KiB
Python
"""
|
|
test classes and functions in utils.py
|
|
"""
|
|
|
|
|
|
import datetime
|
|
from zoneinfo import ZoneInfo
|
|
|
|
import time_machine
|
|
|
|
from ..ffplayout.utils import (gen_dummy, gen_filler, get_date, get_delta,
|
|
get_float, is_advertisement, loop_input,
|
|
playlist, pre, seek_in, set_length,
|
|
src_or_dummy, storage, str_to_sec)
|
|
|
|
# set time zone
|
|
_TZ = ZoneInfo("Europe/Berlin")
|
|
|
|
|
|
def test_str_to_sec():
|
|
assert str_to_sec('06:00:00') == 21600
|
|
|
|
|
|
@time_machine.travel(datetime.datetime(*[2021, 5, 26, 15, 30, 5], tzinfo=_TZ))
|
|
def test_get_delta():
|
|
playlist.start = 0
|
|
current, total = get_delta(15 * 3600 + 30 * 60 + 1)
|
|
assert current == -4
|
|
assert total == 8 * 3600 + 29 * 60 + 55
|
|
|
|
|
|
@time_machine.travel(datetime.datetime(*[2021, 5, 26, 0, 0, 0], tzinfo=_TZ))
|
|
def test_playlist_start_zero():
|
|
playlist.start = 0
|
|
assert get_date(False, 24 * 60 * 60 + 1) == '2021-05-27'
|
|
assert get_date(False, 24 * 60 * 60 - 1) == '2021-05-26'
|
|
|
|
|
|
@time_machine.travel(datetime.datetime(*[2021, 5, 26, 5, 59, 59], tzinfo=_TZ))
|
|
def test_playlist_start_six_before():
|
|
playlist.start = 6 * 60 * 60
|
|
assert get_date(True) == '2021-05-25'
|
|
assert get_date(False) == '2021-05-26'
|
|
|
|
|
|
@time_machine.travel(datetime.datetime(*[2021, 5, 26, 6, 0, 0], tzinfo=_TZ))
|
|
def test_playlist_start_six_after():
|
|
playlist.start = 6 * 60 * 60
|
|
assert get_date(False) == '2021-05-26'
|
|
|
|
|
|
def test_get_float():
|
|
assert get_float('5') == 5
|
|
assert get_float('5', None) == 5.0
|
|
assert get_float('5a', None) is None
|
|
|
|
|
|
def test_is_advertisement():
|
|
assert is_advertisement({'category': 'advertisement'}) is True
|
|
assert is_advertisement({'category': ''}) is False
|
|
assert is_advertisement({}) is False
|
|
|
|
|
|
def test_seek_in():
|
|
assert seek_in(10) == ['-ss', '10']
|
|
assert seek_in(0) == []
|
|
|
|
|
|
def test_set_length():
|
|
assert set_length(300, 50, 200) == ['-t', '150']
|
|
assert set_length(300, 0, 300) == []
|
|
|
|
|
|
def test_loop_input():
|
|
assert loop_input('/store/file.mp4', 300, 450) == ['-stream_loop', '2',
|
|
'-i', '/store/file.mp4',
|
|
'-t', '450']
|
|
|
|
|
|
def test_gen_dummy():
|
|
pre.w = 1024
|
|
pre.h = 576
|
|
pre.fps = 25
|
|
assert gen_dummy(30) == ['-f', 'lavfi', '-i',
|
|
'color=c=#121212:s=1024x576:d=30:r=25,'
|
|
'format=pix_fmts=yuv420p', '-f', 'lavfi',
|
|
'-i', 'anoisesrc=d=30:c=pink:r=48000:a=0.05']
|
|
|
|
|
|
def test_gen_filler():
|
|
storage.filler = ''
|
|
color_src = 'color=c=#121212:s=1024x576:d=300:r=25,format=pix_fmts=yuv420p'
|
|
source = gen_filler({'source': '/store/file.mp4',
|
|
'in': 0, 'out': 300, 'duration': 300, 'seek': 0})
|
|
filler = {'duration': 300, 'in': 0, 'out': 300, 'seek': 0,
|
|
'source': color_src,
|
|
'src_cmd': [
|
|
'-f', 'lavfi', '-i', color_src,
|
|
'-f', 'lavfi', '-i', 'anoisesrc=d=300:c=pink:r=48000:a=0.05']
|
|
}
|
|
|
|
source.pop('probe')
|
|
|
|
assert source == filler
|
|
|
|
|
|
def test_src_or_dummy():
|
|
storage.filler = ''
|
|
color_src = 'color=c=#121212:s=1024x576:d=300:r=25,format=pix_fmts=yuv420p'
|
|
source = src_or_dummy({'source': '/store/file.mp4',
|
|
'in': 0, 'out': 300, 'duration': 300, 'seek': 0})
|
|
|
|
dummy = {'duration': 300, 'in': 0, 'out': 300, 'seek': 0,
|
|
'source': color_src,
|
|
'src_cmd': [
|
|
'-f', 'lavfi', '-i', color_src,
|
|
'-f', 'lavfi', '-i', 'anoisesrc=d=300:c=pink:r=48000:a=0.05']}
|
|
|
|
source.pop('probe')
|
|
|
|
assert source == dummy
|