On Wed, Jun 24, 2009 at 9:18 AM, Nicolas M.
Thiery<nicolas.thi...@u-psud.fr> wrote:
>
> On Wed, Jun 24, 2009 at 08:49:20AM +0200, William Stein wrote:
>>
>> On Wed, Jun 24, 2009 at 8:33 AM, Nicolas M.
>> Thiery<nicolas.thi...@u-psud.fr> wrote:
>> >
>> > On Wed, Jun 24, 2009 at 12:01:58AM -0400, David Roe wrote:
>> >> On Tue, Jun 23, 2009 at 7:08 PM, Nicolas M. Thiery 
>> >> <nicolas.thi...@u-psud.fr> wrote:
>> >
>> >>     On Tue, Jun 23, 2009 at 10:29:34AM +0200, Franco Saliola wrote:
>> >>     > > I'm also in favor of _test_X to avoid cluttering up the tab
>> >>     > > completion. Another option to increase visibility would be to 
>> >> have a
>> >>     > > test object, e.g.
>> >>     > >
>> >>     > > sage: foo.test.associativity()
>> >>     > > True
>> >>     >
>> >>     > +1. I think it merges the two concerns together nicely (visibility 
>> >> and
>> >>     > avoiding clutter).
>> >>
>> >>     Thanks for the feedback! I agree that the syntax looks good.
>> >>
>> >>     But, err, guys, are you telling *me* that you want an attribute here
>> >>     instead of a method? Or should this be:
>> >>
>> >> I'm fine with it as a lazy attribute.
>> >
>> > Taking a good note of that :-)
>> >
>> >>
>> >>            foo.test().associativity?
>> >>
>> >>     I also like the clean aspect of separating the test object. But one of
>> >>     the main point of doing this would be to stick more closely to the
>> >>     testunit framework. But then that would call for:
>> >>
>> >>            foo.test().test_associativity()
>> >>
>> >>     which is not that nice anymore.
>> >>
>> >>     Some other questions:
>> >>
>> >>      - what syntax do you want to run all tests?
>> >>
>> >>            foo.check()
>> >>
>> >>            foo.test().run()
>> >>
>> >>            foo.test()   /   foo.test.associativity()
>> >>
>> >>
>> >> foo.test().  The __call__ method on the test object runs the tests (would 
>> >> this
>> >> work with a lazy attribute?  Yes, right?)
>> >
>> > No problem. Well, I actually would just use a property rather than a
>> > lazy_attribute, since there is no reason to cache the test object.
>> >
>> > Do we have a consensus on this?
>>
>> I am still opposed to adding a non-underscore method to SageObject.
>>
>> I did like Robert Bradshaw's other suggestion to do something like the
>> following.
>>
>> sage: Test(foo).associativity()
>>
>> sage: Test?
>> [[descript testing framework]]
>>
>> I.e., just create a Sage class "Test", which gives access to the test
>> functionality, documents it, can even do something useful on objects
>> foo that aren't necessarily SageObjects at all, etc.
>>
>> Test(obj) returns something that provides all kinds of functionality
>> and methods for testing said object.  This can call certain _ methods
>> on obj.
>
> That would be fine for me too. The only thing I really care for is for
> the actual test methods (._test...) to be attached to foo, and derived
> from its classes.
>
> What syntax would you suggest to run all tests?
>
> One thing I am not very keen on is that to get the list of available
> tests, one need to do:
>
>        sage: t = Test(foo)
>        sage: t.ass<tab>
>
> But I guess I can live with that (in practice, I myself will be using 
> t._test_ass<tab>)

Yeah -- it seems that we have a consensus!

 - William

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to