This is the mail archive of the
mauve-patches@sourceware.org
mailing list for the Mauve project.
Re: Patch: setting Double.MAX_VALUE as Double into double primitive setter through Method.invoke
- From: Olivier Jolly <olivier dot jolly at pcedev dot com>
- To: mauve-patches at sources dot redhat dot com
- Date: Wed, 18 Jan 2006 22:47:22 +0100
- Subject: Re: Patch: setting Double.MAX_VALUE as Double into double primitive setter through Method.invoke
- References: <43CE94D1.6030504@pcedev.com> <m3oe29fexr.fsf@localhost.localdomain>
No problem,
as discussed on IRC, here is the same patch within a separate testlet
flagged to be tested in 1.1+
Hence, the changelog becomes
2006-01-18 Olivier Jolly <olivier.jolly@pcedev.com>
* gnu/testlet/java/lang/Double/DoubleSetterTest.java: new test which
makes sure that unwrapping of new Double(Double.MAX_VALUE) in
Method.invoke works correctly
Olivier
Tom Tromey a écrit :
>>>>>>"Olivier" == Olivier Jolly <olivier.jolly@pcedev.com> writes:
>>>>>>
>>>>>>
>
>Olivier> 2006-01-18 Olivier Jolly <olivier.jolly@pcedev.com>
>Olivier> * gnu/testlet/java/lang/Double/DoubleTest.java: Added tests which
>Olivier> make sure that unwrapping of new Double(Double.MAX_VALUE) in
>Olivier> Method.invoke works correctly
>
>Hmm, was Method in 1.0?
>I think you should write a new test file for this test.
>You can just copy the boilerplate bits from DoubleTest, and up the
>tag to 1.2 or whatever it is.
>
>Tom
>
>
>
--- /dev/null 2006-01-18 20:14:59.210492768 +0100
+++ gnu/testlet/java/lang/Double/DoubleSetterTest.java 2006-01-18 22:29:01.000000000 +0100
@@ -0,0 +1,94 @@
+/* Copyright (C) 1999, 2002 Hewlett-Packard Company
+
+ This file is part of Mauve.
+
+ Mauve is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ Mauve is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Mauve; see the file COPYING. If not, write to
+ the Free Software Foundation, 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.lang.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class DoubleSetterTest implements Testlet
+{
+
+ protected static TestHarness harness;
+
+ /**
+ * Tests the conversion of behaviour of max values when converting from double into Double
+ */
+ public void test_max()
+ {
+ // Check directly the MAX_VALUE against NaN
+ harness.check(!Double.isNaN(Double.MAX_VALUE), "Error: test_max return wrong results");
+ harness.check(!Double.isNaN(new Double(Double.MAX_VALUE).doubleValue()));
+
+ // Check the MAX_VALUE against NaN via a direct method setter
+ DoubleHolder doubleHolder = new DoubleHolder();
+ doubleHolder.setValue(Double.MAX_VALUE);
+ harness.check(Double.MAX_VALUE, doubleHolder.getValue());
+
+ // Check the MAX_VALUE against NaN via a setter called by reflection
+ DoubleHolder doubleHolder2 = new DoubleHolder();
+ try
+ {
+ Method setMethod = DoubleHolder.class.getDeclaredMethod("setValue", new Class[] {double.class});
+ setMethod.invoke(doubleHolder2, new Object[] {new Double(Double.MAX_VALUE)});
+ } catch (NoSuchMethodException e) {
+ harness.fail("no method setValue");
+ } catch (IllegalAccessException e) {
+ harness.fail("illegal access");
+ } catch (InvocationTargetException e) {
+ harness.fail("invocation failed");
+ }
+
+ harness.check(!Double.isNaN(doubleHolder2.getValue()));
+
+ }
+
+
+ /**
+ * Simple holder used to test various way of setting and getting primitive double
+ */
+ private static class DoubleHolder
+ {
+ private double value;
+
+ public double getValue()
+ {
+ return value;
+ }
+
+ public void setValue(double value)
+ {
+ this.value = value;
+ }
+
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ test_max();
+ }
+
+}