#16244: Simplify TestSuite's some_elements role and logic (no random sampling)
---------------------------------+-------------------------------------
   Reporter:  nthiery            |            Owner:
       Type:  defect             |           Status:  new
   Priority:  major              |        Milestone:  sage-6.2
  Component:  doctest framework  |         Keywords:
  Merged in:                     |          Authors:  Nicolas M. ThiƩry
  Reviewers:                     |  Report Upstream:  N/A
Work issues:                     |           Branch:
     Commit:                     |     Dependencies:
   Stopgaps:                     |
---------------------------------+-------------------------------------
 Currently `TestSuite` (more precisely `InstanceTester.some_elements`)
 tries to be fancy by choosing "some elements" using a random sample. The
 random sample is built using Python's `random.sample`, which requires its
 input to be a Sequence (the i-th element can be fetched with o[i]), or
 some dict-like object. This can get brittle with other kinds of inputs
 where `__getitem__` is used for other purposes, or where unranking is just
 computationally expensive. The `some_elements` method also assumes
 `__len__` to be implemented and cheap enough.

 Example:
 {{{
 FF = IntegerModRing(29)
 tester = FF._tester()
 list(tester.some_elements(CartesianProduct(FF, FF, FF)))
 *bang*
 }}}

 In fact the following is close to fail, and just works because the error
 raised during the sample is caught.
 {{{
 tester.some_elements(FF)
 }}}

 This ticket reduces the role of `InstanceTester.some_elements` to just do
 some argument parsing and ensure that at most "max_run" elements are
 returned. It only requires the input to be iterable.

 If we want to have fancy random samples, we should define a specific
 protocol (typically P.sample()) for it, or just let parents decide on the
 appropriate strategy by defining some_elements appropriately.

 This was originaly analyzed in #15919.

--
Ticket URL: <http://trac.sagemath.org/ticket/16244>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to