Uploaded image for project: 'Commons Math'
  1. Commons Math
  2. MATH-42

[math] Function "Fraction math.fraction.FractionFormat.parse(String, ParsePosition) " does not handle parsing the numerater properly

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.1
    • None
    • None
    • None
    • Operating System: other
      Platform: Other

    • 39576

    Description

      Hello,

      While testing function "Fraction math.fraction.FractionFormat.parse(String,
      ParsePosition) ", I found it did not handle properly the case the input string
      passed in is incorrect.

      When I passed in a String that represented a Fraction to be parsed, if the
      Fraction embedded in the String had a whole value, while either the numerator
      or denominator had the negative sign, the function just returned
      1/abs(denomitator).

      Please see the following code segment for more details:

      "
      NumberFormat nf = null;

      FractionFormat properFormat = FractionFormat.getProperInstance
      (Locale.getDefault());
      FractionFormat improperFormat = FractionFormat.getImproperInstance
      (Locale.getDefault());

      //Test 1 : fail
      public void testParseNegative(){

      String source = "1 -2 / 3";
      ParsePosition pos = new ParsePosition(0);

      Fraction actual = properFormat.parse(source, pos);
      assertNull(actual);
      }

      // Test2: success
      public void testParseNegative(){

      String source = "1 -2 / 3";
      ParsePosition pos = new ParsePosition(0);

      Fraction actual = properFormat.parse(source, pos); // return Fraction 1/3
      assertEquals(1, source.getNumerator());
      assertEquals(3, source.getDenominator());
      }

      "

      Note: Similarly, when I passed in the following inputs:
      input 2: (source = “1 2 / -3”, pos = 0)
      input 3: ( source = ” -1 -2 / 3”, pos = 0)

      Function "Fraction parse(String, ParsePosition)" returned Fraction 1/3 (means
      the result Fraction had numerator = 1 and denominator = 3)for all 3 inputs
      above.

      I think the function does not handle parsing the numberator/ denominator
      properly incase input string provides negative numerator or negative
      denominator while there is the whole value.

      Thank you!
      Nhung

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              nhung.nnguyen@gmail.com nhung.nnguyen
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: