On 19 Sep., 01:30, Jonathan Fine <[EMAIL PROTECTED]> wrote: > > there is no fundamental reason why it can't be separated from > > eeconsole.py. > > OK. That might be a good idea.
Ironically, I liked the idea of having more expressive assert statements - a discussion you brought up. But this requires either syntcatical analysis in the general case ( EE and assert magic ) some particular API ( Ben Finney ) or a somewhat restricted, but fully embedded, domain specific language ( Metatest ). Here is what I got after an hour of hacking and filtering assert. Additional remarks are in line comments: _______________________________________________________________________________ ZERO On Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] Reuses session report ZERO_20.eerp _______________________________________________________________________________ # define a test function add and check it out >>> def add(y,x): ... return x+y ... >>> assert add(1,2) == 0 Traceback (most recent call last): File "<input>", line 1, in <module> AssertionError: 3 == 0 # An tested assertion is splitted into lhs, op, rhs. If this is not possible assert # won't be changed by magics. # Here we see a simple formatting of the result in the form: # "%s %s %s" % (eval(lhs), op, eval(rhs)) # More elaborated formatting schemes are user defined: >>> class MyFormatter(AssertionFormatter): ... def format(self, lhs, op, rhs): ... if op == "==": ... return "Expected: %s. Received: %s"%(lhs, rhs) ... else: ... return super(MyFormatter, self).format(lhs, op, rhs) ... # The class AssertionFormatter is defined in EasyExtend.fibers.zero.fiber. # It provides a single method # # format(lhs: str, op: str, rhs: str) -> str # # The default behaviour is the one # demonstrated above. One can overwrite format in subclasses and pass the subclass # instance to assert. # The arguments will be supplied by the framework. # Here we see the new formatter in action: >>> assert add(1,2) == 0, MyFormatter Traceback (most recent call last): File "<input>", line 1, in <module> AssertionError: Expected: 3. Received: 0 # Now it falls back to the default formatting: ?>>> >>> ! >>> assert add(1,2) <=0, MyFormatter Traceback (most recent call last): File "<input>", line 1, in <module> AssertionError: 3 <= 0 >>> quit --------------------. Recorded assertions | -------------------------------------------------------------------------------------------------- Status |eerp ln|repl ln| Assertion -------+-------+------- +-------------------------------------------------------------------------- ERROR | 14 | 14 | assert add(1,2) == 0 ERROR | 26 | 26 | assert add(1,2) == 0, MyFormatter ERROR | 31 | 31 | assert add(1,2) <=0, MyFormatter -------+-------+------- +-------------------------------------------------------------------------- Regards, Kay -- http://mail.python.org/mailman/listinfo/python-list
