* Testing name iteration
*/
public void TestNameIteration()throws Exception
{
try {
ValueIterator iterator = UCharacter.getExtendedNameIterator();
ValueIterator.Element element = new ValueIterator.Element();
ValueIterator.Element old = new ValueIterator.Element();
// testing subrange
iterator.setRange(-10, -5);
if (iterator.next(element)) {
errln("Fail, expected iterator to return false when range is set outside the meaningful range");
}
iterator.setRange(0x110000, 0x111111);
if (iterator.next(element)) {
errln("Fail, expected iterator to return false when range is set outside the meaningful range");
}
try {
iterator.setRange(50, 10);
errln("Fail, expected exception when encountered invalid range");
} catch (Exception e) {
}
iterator.setRange(-10, 10);
if (!iterator.next(element) || element.integer != 0) {
errln("Fail, expected iterator to return 0 when range start limit is set outside the meaningful range");
}
iterator.setRange(0x10FFFE, 0x200000);
int last = 0;
while (iterator.next(element)) {
last = element.integer;
}
if (last != 0x10FFFF) {
errln("Fail, expected iterator to return 0x10FFFF when range end limit is set outside the meaningful range");
}
iterator = UCharacter.getNameIterator();
iterator.setRange(0xF, 0x45);
while (iterator.next(element)) {
if (element.integer <= old.integer) {
errln("FAIL next returned a less codepoint \\u" +
Integer.toHexString(element.integer) + " than \\u" +
Integer.toHexString(old.integer));
break;
}
if (!UCharacter.getName(element.integer).equals(element.value))
{
errln("FAIL next codepoint \\u" +
Integer.toHexString(element.integer) +
" does not have the expected name " +
UCharacter.getName(element.integer) +
" instead have the name " + (String)element.value);
break;
}
old.integer = element.integer;
}
iterator.reset();
iterator.next(element);
if (element.integer != 0x20) {
errln("FAIL reset in iterator");
}
iterator.setRange(0, 0x110000);
old.integer = 0;
while (iterator.next(element)) {
if (element.integer != 0 && element.integer <= old.integer) {
errln("FAIL next returned a less codepoint \\u" +
Integer.toHexString(element.integer) + " than \\u" +
Integer.toHexString(old.integer));
break;
}
if (!UCharacter.getName(element.integer).equals(element.value))
{
errln("FAIL next codepoint \\u" +
Integer.toHexString(element.integer) +
" does not have the expected name " +
UCharacter.getName(element.integer) +
" instead have the name " + (String)element.value);
break;
}
for (int i = old.integer + 1; i < element.integer; i ++) {
if (UCharacter.getName(i) != null) {
errln("FAIL between codepoints are not null \\u" +
Integer.toHexString(old.integer) + " and " +
Integer.toHexString(element.integer) + " has " +
Integer.toHexString(i) + " with a name " +
UCharacter.getName(i));
break;
}
}
old.integer = element.integer;
}
iterator = UCharacter.getExtendedNameIterator();
old.integer = 0;
while (iterator.next(element)) {
if (element.integer != 0 && element.integer != old.integer) {
errln("FAIL next returned a codepoint \\u" +
Integer.toHexString(element.integer) +
" different from \\u" +
Integer.toHexString(old.integer));
break;
}
if (!UCharacter.getExtendedName(element.integer).equals(
element.value)) {
errln("FAIL next codepoint \\u" +
Integer.toHexString(element.integer) +
" name should be "
+ UCharacter.getExtendedName(element.integer) +
" instead of " + (String)element.value);
break;
}
old.integer++;
}
iterator = UCharacter.getName1_0Iterator();
old.integer = 0;
while (iterator.next(element)) {
logln(Integer.toHexString(element.integer) + " " +
(String)element.value);
if (element.integer != 0 && element.integer <= old.integer) {
errln("FAIL next returned a less codepoint \\u" +
Integer.toHexString(element.integer) + " than \\u" +