diff --git a/pcl_expect.py b/pcl_expect.py index bb8d3bcea65c949b70c5cda8f1ace80dbcc6294e..968992cbcd9f607b4b04157360fa090d1efe54b2 100644 --- a/pcl_expect.py +++ b/pcl_expect.py @@ -427,6 +427,54 @@ def __validate_expectations(expectations): else: raise BadArgs +def expect(expectations): + x = impl() + while x.loop(): + for ix in range(len(expectations)): + pattern = expectations[ix] + if pattern[0] == RE: + if len(pattern) == 3: + (cmd, exp, regexp) = pattern + callback = None + elif len(pattern) == 4: + (cmd, exp, regexp, callback) = pattern + else: + raise BadArgs + if x.re(exp, regexp): + if callback is not None and callback(exp) == CONT: + x.cont() + break + else: + return ix, exp + elif pattern[0] == EOF: + if len(pattern) == 2: + (cmd, exp) = pattern + callback = None + elif len(pattern) == 3: + (cmd, exp, callback) = pattern + else: + raise BadArgs + if x.eof(exp): + if callback is not None and callback(exp) == CONT: + x.cont() + break + else: + return ix, exp + elif pattern[0] == TIMEOUT: + if len(pattern) == 1: + cmd = pattern[0] + elif len(pattern) == 2: + (cmd, callback) = pattern + else: + raise BadArgs + if x.timeout(): + if callback is not None and callback() == CONT: + x.cont() + break + else: + return ix, None + return None, None + def debug(s): if 0: sys.stderr.write("pcl-expect: %s\n" % s)