| |
| # Predeclared built-ins for this module: |
| # |
| # error(msg): report an error in Go's test framework without halting execution. |
| # catch(f): evaluate f() and returns its evaluation error message, if any |
| # matches(str, pattern): report whether str matches regular expression pattern. |
| # struct: a constructor for a simple HasFields implementation. |
| # _freeze(x): freeze the value x and everything reachable from it. |
| # |
| # Clients may use these functions to define their own testing abstractions. |
| |
| def _eq(x, y): |
| if x != y: |
| error("%r != %r" % (x, y)) |
| |
| def _ne(x, y): |
| if x == y: |
| error("%r == %r" % (x, y)) |
| |
| def _true(cond, msg="assertion failed"): |
| if not cond: |
| error(msg) |
| |
| def _lt(x, y): |
| if not (x < y): |
| error("%s is not less than %s" % (x, y)) |
| |
| def _contains(x, y): |
| if y not in x: |
| error("%s does not contain %s" % (x, y)) |
| |
| def _fails(f, pattern): |
| "assert_fails asserts that evaluation of f() fails with the specified error." |
| msg = catch(f) |
| if msg == None: |
| error("evaluation succeeded unexpectedly (want error matching %r)" % pattern) |
| elif not matches(pattern, msg): |
| error("regular expression (%s) did not match error (%s)" % (pattern, msg)) |
| |
| freeze = _freeze # an exported global whose value is the built-in freeze function |
| |
| assert = struct( |
| fail = error, |
| eq = _eq, |
| ne = _ne, |
| true = _true, |
| lt = _lt, |
| contains = _contains, |
| fails = _fails, |
| ) |