1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- from larigira.filters.basic import maxwait, percentwait
- def matchval(d):
- def mocked(input_):
- if input_ in d:
- return d[input_]
- for k in d:
- if k in input_: # string matching
- return d[k]
- raise Exception("This test case is bugged! No value for %s" % input_)
- return mocked
- durations = dict(one=60, two=120, three=180, four=240, ten=600, twenty=1200,
- thirty=1800, nonexist=None)
- dur = matchval(durations)
- def normalize_ret(ret):
- if type(ret) is bool:
- return ret, ''
- return ret
- def mw(*args, **kwargs):
- return normalize_ret(maxwait(*args, **kwargs))
- def pw(*args, **kwargs):
- kwargs['getdur'] = dur
- return normalize_ret(percentwait(*args, **kwargs))
- def test_maxwait_nonpresent_disabled():
- ret = mw([], {}, {})
- assert ret[0] is True
- def test_maxwait_explicitly_disabled():
- ret = mw([], {}, {'EF_MAXWAIT_SEC': 0})
- assert ret[0] is True
- def test_maxwait_ok():
- ret = mw([], {'status': {'time': '250:300'}}, {'EF_MAXWAIT_SEC': 100})
- assert ret[0] is True
- def test_maxwait_exceeded():
- ret = mw([], {'status': {'time': '100:300'}}, {'EF_MAXWAIT_SEC': 100})
- assert ret[0] is False
- def test_maxwait_limit():
- ret = mw([], {'status': {'time': '199:300'}}, {'EF_MAXWAIT_SEC': 100})
- assert ret[0] is False
- ret = mw([], {'status': {'time': '200:300'}}, {'EF_MAXWAIT_SEC': 100})
- assert ret[0] is True
- ret = mw([], {'status': {'time': '201:300'}}, {'EF_MAXWAIT_SEC': 100})
- assert ret[0] is True
- def test_percentwait_nonpresent_disabled():
- ret = pw([], {}, {})
- assert ret[0] is True
- def test_percentwait_explicitly_disabled():
- ret = pw([], {}, {'EF_MAXWAIT_PERC': 0})
- assert ret[0] is True
- def test_percentwait_ok():
- # less than one minute missing
- ret = pw(dict(uris=['file:///oneminute.ogg']),
- {'status': {'time': '250:300'}},
- {'EF_MAXWAIT_PERC': 100})
- assert ret[0] is True
- # more than one minute missing
- ret = pw(dict(uris=['file:///oneminute.ogg']),
- {'status': {'time': '220:300'}},
- {'EF_MAXWAIT_PERC': 100})
- assert ret[0] is False
- def test_percentwait_morethan100():
- # requiring 5*10 = 50mins = 3000sec
- ret = pw(dict(uris=['file:///tenminute.ogg']),
- {'status': {'time': '4800:6000'}},
- {'EF_MAXWAIT_PERC': 500})
- assert ret[0] is True
- ret = pw(dict(uris=['file:///oneminute.ogg']),
- {'status': {'time': '2000:6000'}},
- {'EF_MAXWAIT_PERC': 500})
- assert ret[0] is False
|