1. 17 Oct, 2014 4 commits
  2. 16 Oct, 2014 2 commits
  3. 09 Oct, 2014 1 commit
  4. 08 Oct, 2014 1 commit
  5. 07 Oct, 2014 2 commits
  6. 02 Oct, 2014 1 commit
  7. 01 Oct, 2014 3 commits
  8. 30 Sep, 2014 2 commits
  9. 26 Sep, 2014 6 commits
    • Neil Fuller's avatar
      972b7282
    • Neil Fuller's avatar
      Rewrite tests and add tests that demonstrate a bug · 4e92b626
      Neil Fuller authored
      The bug:
      DecimalFormat.format() behavior is slightly
      lossy around 15 decimal digits even without any
      digit constraints.
      
      This change isolates the test failures that result from
      this bug to 2 test cases:
      
      test_formatDouble_bug17656132
      test_formatDouble_roundingProblemCases
      
      Example of the bug:
      
      Double: 999999999999999.9 is represented as an IEEE 754
      value which is exactly decimal 999999999999999.875
      
      When format(999999999999999.9) is called on a DecimalFormat
      with large MaxIntegerDigit and MaxFractionDigit....
      
      Correct answer: "999999999999999.9"
      Actual answer: "1000000000000000"
      
      By contrast Double.toString() prints 9.999999999999999E14
      for Android and the RI (correctly).
      
      The DecimalFormat is printing to 16 decimal digits: The
      inclusion of the 16th digit implies slightly more precision
      than IEEE 754 provides (~15.9 decimal digits for most of the
      representable range).
      However, the use of 16 decimal digits for outputting IEEE 754
      appears consistent with Double.toString() and elsewhere.
      
      Before printing, DecimalFormat appears to be rounding to
      15 decimal digits internally (or something similar).
      
      Parsing "1000000000000000" produces a different double
      representation than the original double
      (one that is closer to 1000000000000000 than
      999999999999999.9). This is the bug - we just lost information.
      We should be able to round-trip a double if there is no rounding
      since every double is representable with decimal and we have
      sufficient digits available to represent it (close enough) in
      decimal.
      
      Additional tests have been added to demonstrate the bug
      and also demonstrate the (correct) formatting behavior when the
      formatter is rounding.
      
      test_formatDouble_maxFractionDigits: rounding at 1, 10, 14 digits
      after the dp.
      test_formatDouble_roundingTo15Digits: rounding at 15 total digits
      overall
      test_formatDouble_bug17656132: Demonstrates the bug concisely.
      
      The test changes:
      
      test_formatDouble_wideRange():
      implicitly assumed that the any loss of accuracy
      when a decimal string was turned into a double
      would be undone when format() was called, and it would
      always arrive back at the original string. The test
      has been re-written here to use BigDecimal rather than
      Double.parseDouble(), and to compare two doubles rather
      than original string with the output from format().
      
      The test was previously failing with the RI for 1E23:
      the closest representable double to 1E23 is exactly
      99999999999999991611392.
      The value produces "99999999999999990000000" when formatted
      with the RI and not "100000000000000000000000". On Android
      it was passing for 1E23 because of bug 17656132 rounding
      back to the original decimal value.
      
      This test was previously failing on Android with 1E-309 because
      below 1E-308 IEEE 754 starts losing precision and the closest
      representable value is not close to the original string. The
      test now isn't affected if the double being tested is not close
      to the original decimal; it passes providing the can be round
      tripped.
      
      test_formatDouble_roundingProblemCases: Re-written like the
      _wideRange test but continues to demonstrate the bug due to
      the test values (intentionally) chosen.
      
      Bug: 17656132
      Change-Id: I7d81e38bd1f9dbfd1e1b2caa60a6bb16b871b925
      4e92b626
    • Neil Fuller's avatar
      Merge "Mark... · 37fcc48b
      Neil Fuller authored
      Merge "Mark libcore.java.text.DecimalFormatSymbolsTest#test_getInstance_unknown_or_invalid_locale a known failure."
      37fcc48b
    • Elliott Hughes's avatar
      Mark... · 19dcdd94
      Elliott Hughes authored
      Mark libcore.java.text.DecimalFormatSymbolsTest#test_getInstance_unknown_or_invalid_locale a known failure.
      
      The good news is that for the first time we understand why this is failing.
      Too big to fix for L though, and not a regression.
      
      Bug: 17374604
      
      (cherry-picked from commit f887ab7e)
      
      Change-Id: I589fe2eae0643e07e8db8cbcc7df52563aa24604
      19dcdd94
    • Neil Fuller's avatar
      77afa6c6
    • Neil Fuller's avatar
      df014f5f
  10. 25 Sep, 2014 4 commits
    • Hiroshi Yamauchi's avatar
      4862d47c
    • Hiroshi Yamauchi's avatar
      Update Class.primitiveType field uses. · c519ec27
      Hiroshi Yamauchi authored
      This goes with the array allocation path optimization CL 108967.
      
      Bug: 9986565
      Change-Id: I96de4725d4517d84af34ad05792fce8aa322f57a
      c519ec27
    • Neil Fuller's avatar
      Fix test_formatToCharacterIterator_original · d90019a2
      Neil Fuller authored
      Two issues fixed:
      1) The negative currency cases appear to have never been correct. Almost
      certainly they would have had the sign bit as the first element in the
      format.
      2) The recent change in Android to support the Turkish currency format
      broke the TR tests (previously obscured by 1). Bug 16727554 /
      commits ef91d1db and
      44b0a574cbc3a54e421f5c79020cc59fbd4f34b9.
      
      Bug: 12781028
      Change-Id: I6187f7f1feed915b1d8fd5fb398caef7998bfa04
      d90019a2
    • Neil Fuller's avatar
      Fixing formatDouble scientific notation tests · 279c42d3
      Neil Fuller authored
      Rather than having perpetually failing test cases the current Android
      behavior has been captured and compared against the Android docs.
      The "problem cases" have been merged into one test.
      
      The tests now execute all format() calls and report at the end if any
      fail, rather than failing at the first problem. This makes debugging
      and comparison easier.
      
      Each output from the affected tests has been inspected. The formatter
      settings and some justification have been documented in the tests for
      later engineers.
      
      For format() with scientific notation the desired behavior is often
      unclear because some parts of the docs contradict others about how
      much the min/max integer/fraction values are used.
      
      Many of the "problem cases" were the result of the significant
      digit rules not being obeyed by the RI which probably introduced
      doubt as to whether Android/ICU was correct.
      
      None of the results were found to be actually wrong, i.e. they appear
      to output the input number to the correct amount of precision.
      
      When using min/max integer/fraction digits (i.e. not using '@'
      characters), apparently by design DecimalFormat does
      not produce strings that make clear the number of significant digits
      used to generate them. e.g. 1.0 output to 4 sig digits does not output
      1.000E0, but may output 1.0E0 or 1E0 depending on the pattern.
      
      Bug reports have been created to record why some categories of results
      are ok or to follow up where behavior is open to interpretation, e.g.
      the choice of exponent, or whether leading or trailing zeros are
      present in the output.
      
      Bug: 17654561
      Bug: 17653864
      Bug: 17652647
      Bug: 17652196
      Bug: 12781028
      Change-Id: I6b3944b40ff837ecafd1b1be62c5824edb979930
      279c42d3
  11. 24 Sep, 2014 5 commits
  12. 23 Sep, 2014 5 commits
  13. 19 Sep, 2014 2 commits
  14. 18 Sep, 2014 1 commit
    • Adam Langley's avatar
      Make libcore compile with BoringSSL. · 8383f343
      Adam Langley authored
      
      NativeBN_putULongInt was cleaned up because of a slightly worrying mix
      of signed and unsigned ints, and because of an unneeded preprocessor
      test. However, as I look down the rest of the file, there's a lot of it
      but I didn't get to fixing it all up.
      
      Bug: 17409664
      Change-Id: If0adde83bebf04e7e3be163c1b30ebef75a67d05
      Signed-off-by: default avatarAdam Langley <agl@google.com>
      8383f343
  15. 17 Sep, 2014 1 commit
    • Alex Klyubin's avatar
      Enable hostname verification for absolute hostnames. · 9be69a95
      Alex Klyubin authored
      This makes the DefaultHostnameVerifier (the platform default
      HostnameVerifier) match relative hostname patterns from CN and DNS
      SubjectAltNames fields of TLS/SSL server certificates against
      absolute hostnames. Absolute hostname patterns will still never match
      relative hostnames because it is not known to what absolute name a
      relative name was resolved by DNS.
      
      For example, if hostname is "www.android.com." and server certificate
      is for "www.android.com", hostname verification will now pass.
      Whereas, if hostname is "www.android.com" and server certificate is
      for "www.android.com.", hostname verification will still fail.
      
      All of this is needed because server certificates do not normally
      contain absolute hostnames or hostname patterns. At the same time,
      connections via absolute hostnames should be supported and even
      preferred in most cases, to avoid DNS search suffixes being added.
      
      Bug: 17482685
      Change-Id: I3f2006fa1110004b18ce627675334d2a54805c7a
      9be69a95