On 12/20/15 8:41 PM, Gilles wrote:
> On Sat, 19 Dec 2015 11:35:26 -0700, Phil Steitz wrote:
>> On 12/19/15 9:02 AM, Gilles wrote:
>>> Hi.
>>>
>>> While experimenting on
>>>   https://issues.apache.org/jira/browse/MATH-1300
>>> I created a new
>>>   JDKRandomGeneratorTest
>>> that inherits from
>>>   RandomGeneratorAbstractTest
>>> similarly to the classes for testing all the other RNG implemented
>>> in CM.
>>>
>>> The following tests (implemented in the base class) failed:
>>> 1.
>>>
>>> testNextIntNeg(org.apache.commons.math4.random.JDKRandomGeneratorTest)
>>>
>>> Time elapsed: 0.001 sec  <<< ERROR!
>>>    java.lang.Exception: Unexpected exception,
>>>
>>> expected<org.apache.commons.math4.exception.MathIllegalArgumentException>
>>>
>>> but was<java.lang.IllegalArgumentException>
>>> 2.
>>>
>>> testNextIntIAE2(org.apache.commons.math4.random.JDKRandomGeneratorTest)
>>>
>>> Time elapsed: 0.015 sec  <<< ERROR!
>>>    java.lang.IllegalArgumentException: bound must be positive
>>>
>>> This is caused by try/catch clauses that expect a
>>> "MathIllegalArgumentException"
>>> but "JDKRandomGenerator" extends "java.util.Random" that for those
>>> methods throws
>>> "IllegalArgumentException".
>>>
>>> What to do?
>>
>> I would change the test to expect IllegalArgumentException.  Most
>> [math] generators actually throw NotStrictlyPositiveException here,
>> which extends MIAE, which extends IAE, so this should work.
>
> It turns out that, in the master branch, the hierarchy is
>
>        RuntimeException
>              |
>      MathRuntimeException
>              |
>    MathIllegalArgumentException
>
> as per
>   https://issues.apache.org/jira/browse/MATH-853
>
> [And the Javadoc and "throws" clauses are not yet consistent with
> this
> in all the code base (e.g. the "RandomGenerator" interface).]
>
> So, in 4.0, "JDKRandomGenerator" should probably not inherit from
> "java.util.Random" but delegate to it, trap standard exceptions
> raised,
> and rethrow CM ones.

I guess that is the only way out if we are going to stick with the
MATH-853 setup.  This example illustrates a drawback identified in
the thread mentioned in the ticket.  I would personally be happy
reverting master back to the 3.x setup.

Phil
>
>
> Gilles
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to