]> granicus.if.org Git - icu/commitdiff
ICU-11914 Refine tests, remove TODO comment.
authorCraig Cornelius <ccornelius@google.com>
Fri, 4 Mar 2016 20:52:04 +0000 (20:52 +0000)
committerCraig Cornelius <ccornelius@google.com>
Fri, 4 Mar 2016 20:52:04 +0000 (20:52 +0000)
X-SVN-Rev: 38489

icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java

index e8b9d9b72c1bc01bc0426cde319b37fc51f603a1..43ffaf282a181aeee733af965a62c55b4d8cc1bc 100644 (file)
@@ -4390,32 +4390,35 @@ public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
             int start = iterator.getRunStart();
             int end = iterator.getRunLimit();
             Iterator it = iterator.getAttributes().keySet().iterator();
-            AttributedCharacterIterator.Attribute attribute = (AttributedCharacterIterator.Attribute) it.next();
-            Object value = iterator.getAttribute(attribute);
-            result.add(new FieldContainer(start, end, attribute, value));
+            while (it.hasNext()) {
+                AttributedCharacterIterator.Attribute attribute = (AttributedCharacterIterator.Attribute) it.next();
+                Object value = iterator.getAttribute(attribute);
+
+                result.add(new FieldContainer(start, end, attribute, value));
+            }
             iterator.setIndex(end);
         }
         assertEquals("Comparing vector length for " + formattedOutput,
             expected.size(), result.size());
 
-        if (!expected.containsAll(result)) {
+        if (!expected.containsAll(result) || !result.containsAll(expected)) {
           // Print information on the differences.
+          System.out.println(" ");
           for (int i = 0; i < expected.size(); i++) {
-            System.out.println("     expected[" + i + "] =" +
+            System.out.println(" expected[" + i + "] = " +
                 expected.get(i).start + " " +
                 expected.get(i).end + " " +
-                expected.get(i).attribute + " " +
                 expected.get(i).value);
-            System.out.println(" result[" + i + "] =" +
+          }
+          for (int i = 0; i < result.size(); i++) {
+            System.out.println("   result[" + i + "] = " +
                 result.get(i).start + " " +
                 result.get(i).end + " " +
-                result.get(i).attribute + " " +
                 result.get(i).value);
           }
         }
-        // TODO: restore when #11914 is fixed.
-        // assertTrue("Comparing vector results for " + formattedOutput,
-        //    expected.containsAll(result));
+        assertTrue("Comparing vector results for " + formattedOutput,
+            expected.containsAll(result));
     }
 
     // Testing for Issue 11914, missing FieldPositions for some field types.
@@ -4424,8 +4427,10 @@ public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
         List<FieldContainer> v1 = new ArrayList<FieldContainer>(7);
         v1.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER));
         v1.add(new FieldContainer(3, 4, NumberFormat.Field.GROUPING_SEPARATOR));
+        v1.add(new FieldContainer(3, 4, NumberFormat.Field.INTEGER));
         v1.add(new FieldContainer(4, 7, NumberFormat.Field.INTEGER));
         v1.add(new FieldContainer(7, 8, NumberFormat.Field.GROUPING_SEPARATOR));
+        v1.add(new FieldContainer(7, 8, NumberFormat.Field.INTEGER));
         v1.add(new FieldContainer(8, 11, NumberFormat.Field.INTEGER));
         v1.add(new FieldContainer(11, 12, NumberFormat.Field.DECIMAL_SEPARATOR));
         v1.add(new FieldContainer(12, 15, NumberFormat.Field.FRACTION));
@@ -4460,14 +4465,21 @@ public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
         v3.add(new FieldContainer(1, 2, NumberFormat.Field.INTEGER));
         v3.add(new FieldContainer(2, 3, NumberFormat.Field.GROUPING_SEPARATOR));
         v3.add(new FieldContainer(3, 6, NumberFormat.Field.INTEGER));
+        v3.add(new FieldContainer(2, 3, NumberFormat.Field.INTEGER));
         v3.add(new FieldContainer(6, 7, NumberFormat.Field.GROUPING_SEPARATOR));
+        v3.add(new FieldContainer(6, 7, NumberFormat.Field.INTEGER));
         v3.add(new FieldContainer(7, 10, NumberFormat.Field.INTEGER));
+        v3.add(new FieldContainer(10, 11, NumberFormat.Field.INTEGER));
         v3.add(new FieldContainer(10, 11, NumberFormat.Field.GROUPING_SEPARATOR));
         v3.add(new FieldContainer(11, 14, NumberFormat.Field.INTEGER));
+        v3.add(new FieldContainer(14, 15, NumberFormat.Field.INTEGER));
         v3.add(new FieldContainer(14, 15, NumberFormat.Field.GROUPING_SEPARATOR));
         v3.add(new FieldContainer(15, 18, NumberFormat.Field.INTEGER));
+
+        v3.add(new FieldContainer(18, 19, NumberFormat.Field.INTEGER));
         v3.add(new FieldContainer(18, 19, NumberFormat.Field.GROUPING_SEPARATOR));
         v3.add(new FieldContainer(19, 22, NumberFormat.Field.INTEGER));
+        v3.add(new FieldContainer(22, 23, NumberFormat.Field.INTEGER));
         v3.add(new FieldContainer(22, 23, NumberFormat.Field.GROUPING_SEPARATOR));
         v3.add(new FieldContainer(23, 26, NumberFormat.Field.INTEGER));
         BigInteger bigNumberInt = new BigInteger("-1234567890246813579");
@@ -4491,6 +4503,28 @@ public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
 
         iterator = fmt2.formatToCharacterIterator(numberBigD);
         CompareAttributedCharacterFormatOutput(iterator, v4, fmtNumberBigDExp);
+    }
 
+    public void test_formatToCharacterIterator() throws Exception {
+        AttributedCharacterIterator iterator;
+        int[] runStarts;
+        int[] runLimits;
+        String result;
+        char current;
+        // BigInteger.
+        iterator = new DecimalFormat().formatToCharacterIterator(new BigInteger("123456789"));
+        runStarts = new int[] { 0, 0, 0, 3, 4, 4, 4, 7, 8, 8, 8 };
+        runLimits = new int[] { 3, 3, 3, 4, 7, 7, 7, 8, 11, 11, 11 };
+        result = "123,456,789";
+        current = iterator.current();
+        for (int i = 0; i < runStarts.length; i++) {
+            assertEquals("wrong start @" + i, runStarts[i], iterator.getRunStart());
+            assertEquals("wrong limit @" + i, runLimits[i], iterator.getRunLimit());
+            assertEquals("wrong char @" + i, result.charAt(i), current);
+            current = iterator.next();
+        }
+        assertEquals("Begin index:", 0, iterator.getBeginIndex());
+        assertEquals("End index:  ", 11, iterator.getEndIndex());
     }
+
 }