ICU-9524 Making Java ListFormatter behave correctly with any order of parameters

X-SVN-Rev: 32303
This commit is contained in:
Umesh Nair 2012-08-30 20:35:58 +00:00
parent f6ff5f1b9a
commit 4c5fe60f3e
2 changed files with 19 additions and 3 deletions

View file

@ -147,9 +147,11 @@ final public class ListFormatter {
if (i0 < 0 || i1 < 0) {
throw new IllegalArgumentException("Missing {0} or {1} in pattern " + pattern);
}
return i0 < i1
? pattern.substring(0, i0) + a + pattern.substring(i0+3, i1) + b + pattern.substring(i1+3)
: pattern.substring(0, i1) + a + pattern.substring(i1+3, i0) + b + pattern.substring(i0+3);
if (i0 < i1) {
return pattern.substring(0, i0) + a + pattern.substring(i0+3, i1) + b + pattern.substring(i1+3);
} else {
return pattern.substring(0, i1) + b + pattern.substring(i1+3, i0) + a + pattern.substring(i0+3);
}
}
/** JUST FOR DEVELOPMENT */

View file

@ -63,6 +63,20 @@ public class ListFormatterTest extends TestFmwk {
checkData(ListFormatter.getInstance(ULocale.JAPANESE), JapaneseTestData);
}
String[] outOfOrderTestData = {
"",
"A",
"B after A",
"C in the last after B after the first A",
"D in the last after C after B after the first A",
"E in the last after D after C after B after the first A"
};
public void TestPatternOutOfOrder() {
ListFormatter formatter = new ListFormatter("{1} after {0}", "{1} after the first {0}", "{1} after {0}",
"{1} in the last after {0}");
checkData(formatter, outOfOrderTestData);
}
String[] RootTestData = {
"",
"A",