|
@@ -0,0 +1,98 @@
|
|
|
+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
|