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.
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));
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");
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());
}
+
}