# HG changeset patch # User Lubomir Nerad # Date 1361284412 -3600 # Node ID cc3871bdd83c27e2e1b645aed95568e204e1a6a3 # Parent b2731af0357df566151cf422444d6c3bb9d335e8 Fixed float/double problems found by David diff -r b2731af0357d -r cc3871bdd83c emul/compact/src/test/java/org/apidesign/bck2brwsr/compact/tck/JFXIssuesTest.java --- a/emul/compact/src/test/java/org/apidesign/bck2brwsr/compact/tck/JFXIssuesTest.java Fri Feb 15 16:06:12 2013 +0100 +++ b/emul/compact/src/test/java/org/apidesign/bck2brwsr/compact/tck/JFXIssuesTest.java Tue Feb 19 15:33:32 2013 +0100 @@ -39,7 +39,15 @@ @Compare public boolean isClassAssignable() { return Application.class.isAssignableFrom(MyApplication.class); } - + + @Compare public boolean isNaN() { + return Double.isNaN(Double.NaN); + } + + @Compare public boolean isInfinite() { + return Float.isInfinite(Float.NEGATIVE_INFINITY); + } + @Factory public static Object[] create() { return VMTest.create(JFXIssuesTest.class); } diff -r b2731af0357d -r cc3871bdd83c emul/mini/src/main/java/java/lang/Double.java --- a/emul/mini/src/main/java/java/lang/Double.java Fri Feb 15 16:06:12 2013 +0100 +++ b/emul/mini/src/main/java/java/lang/Double.java Tue Feb 19 15:33:32 2013 +0100 @@ -191,7 +191,7 @@ * @return a string representation of the argument. */ @JavaScriptBody(args="d", body="var r = d.toString();" - + "if (r.indexOf('.') === -1) r = r + '.0';" + + "if (isFinite(d) && (r.indexOf('.') === -1)) r = r + '.0';" + "return r;") public static String toString(double d) { throw new UnsupportedOperationException(); diff -r b2731af0357d -r cc3871bdd83c emul/mini/src/main/java/java/lang/Float.java --- a/emul/mini/src/main/java/java/lang/Float.java Fri Feb 15 16:06:12 2013 +0100 +++ b/emul/mini/src/main/java/java/lang/Float.java Tue Feb 19 15:33:32 2013 +0100 @@ -819,11 +819,15 @@ */ @JavaScriptBody(args = "bits", body = - "if (bits === 0x7f800000) return Number.POSITIVE_INFINITY;\n" - + "if (bits === 0xff800000) return Number.NEGATIVE_INFINITY;\n" - + "if (bits >= 0x7f800001 && bits <= 0xffffffff) return Number.NaN;\n" - + "var s = ((bits >> 31) == 0) ? 1 : -1;\n" + "var s = ((bits >> 31) == 0) ? 1 : -1;\n" + "var e = ((bits >> 23) & 0xff);\n" + + "if (e === 0xff) {\n" + + " if ((bits & 0x7fffff) === 0) {\n" + + " return (s > 0) ? Number.POSITIVE_INFINITY" + + " : Number.NEGATIVE_INFINITY;\n" + + " }\n" + + " return Number.NaN;\n" + + "}\n" + "var m = (e == 0) ?\n" + " (bits & 0x7fffff) << 1 :\n" + " (bits & 0x7fffff) | 0x800000;\n"