< prev index next >
test/java/text/Format/common/FormatIteratorTest.java
Print this page
*** 35,44 ****
--- 35,45 ----
import java.lang.reflect.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+ import java.text.AttributedCharacterIterator.Attribute;
/**
* FormatTester creates Formats, and tests the resulting FieldPositions
* and AttributedCharacterIterator based on a file. The file is a hierarchical
* set of key/value pairs, where each value can also be an array or map. The
*** 92,102 ****
* end = end index of FieldPosition after formatting
* </pre>
* Any lines starting with {@code '#'} are comment lines and ignored.
*/
public class FormatIteratorTest extends IntlTest {
- private static HashMap attrs;
private Format format;
private Object value;
private String text;
public static final Object ARG0_FIELD_ID = MessageFormat.
--- 93,102 ----
*** 141,174 ****
public void testDateFormat() {
_test(new File(System.getProperty("test.src", "."),
"dateFormat.props"));
}
private void _test(File file) {
try {
- attrs = new HashMap();
logln("testing: " + file);
PParser parser = new PParser();
! Hashtable contents = parser.parse(new BufferedReader(
new FileReader(file)));
! Vector test = (Vector)contents.get("tests");
for (int counter = 0; counter < test.size(); counter++) {
logln("creating: " + (counter / 2));
AttributedCharacterIterator iterator =
! create((Hashtable)test.get(counter));
logln("verifying: " + (counter / 2));
! verify(iterator, (Hashtable)test.get(++counter));
}
} catch (IOException ioe) {
errln("Error reading: " + ioe);
}
}
! public void verify(AttributedCharacterIterator iterator,Hashtable table) {
int length = Integer.parseInt((String)table.get("length"));
// Verify the text
if (!getText(iterator).equals(
escapeIfNecessary((String)table.get("text")))) {
--- 141,175 ----
public void testDateFormat() {
_test(new File(System.getProperty("test.src", "."),
"dateFormat.props"));
}
+ @SuppressWarnings("unchecked")
private void _test(File file) {
try {
logln("testing: " + file);
PParser parser = new PParser();
! Map<String,Object> contents = parser.parse(new BufferedReader(
new FileReader(file)));
! List<Object> test = (List)contents.get("tests");
for (int counter = 0; counter < test.size(); counter++) {
logln("creating: " + (counter / 2));
AttributedCharacterIterator iterator =
! create((Map)test.get(counter));
logln("verifying: " + (counter / 2));
! verify(iterator, (Map)test.get(++counter));
}
} catch (IOException ioe) {
errln("Error reading: " + ioe);
}
}
! @SuppressWarnings("unchecked")
! public void verify(AttributedCharacterIterator iterator,Map<String,Object> table) {
int length = Integer.parseInt((String)table.get("length"));
// Verify the text
if (!getText(iterator).equals(
escapeIfNecessary((String)table.get("text")))) {
*** 183,239 ****
errln("Bogus end: " + iterator.getEndIndex());
}
for (int counter = 0; counter < length; counter++) {
iterator.setIndex(counter);
if (!verifyAttributes(iterator.getAttributes().keySet(),
! makeAttributes((Vector)table.get(Integer.
toString(counter))))) {
errln("Attributes don't match at " + counter + " expecting " +
! makeAttributes((Vector)table.get(Integer.toString
(counter))) + " got " +
iterator.getAttributes().keySet());
}
}
for (int counter = length - 1; counter >= 0; counter--) {
iterator.setIndex(counter);
if (!verifyAttributes(iterator.getAttributes().keySet(),
! makeAttributes((Vector)table.get(Integer.
toString(counter))))) {
errln("Attributes don't match at " + counter + " expecting " +
! makeAttributes((Vector)table.get(Integer.toString
(counter))) + " got " +
iterator.getAttributes().keySet());
}
}
verifyLimits(iterator, table);
text = escapeIfNecessary((String)table.get("text"));
! Vector fps = (Vector)table.get("fieldPositions");
if (fps != null) {
for (int counter = 0; counter < fps.size(); counter++) {
! verifyFieldPosition(counter, (Hashtable)fps.get(counter));
}
}
}
private void verifyLimits(AttributedCharacterIterator iterator,
! Hashtable table) {
! Vector limits = (Vector)table.get("limits");
if (limits != null) {
for (int counter = 0; counter < limits.size(); counter++) {
! verifyLimit(iterator, (Hashtable)limits.get(counter));
}
}
}
private void verifyLimit(AttributedCharacterIterator iterator,
! Hashtable table) {
int begin = Integer.parseInt((String)table.get("begin"));
int end = Integer.parseInt((String)table.get("end"));
! Set attrs = makeAttributes((Vector)table.get("attributes"));
String begin2S = (String)table.get("begin2");
int begin2 = (begin2S != null) ? Integer.parseInt(begin2S) : begin;
String end2S = (String)table.get("end2");
int end2 = (end2S != null) ? Integer.parseInt(end2S) : end;
--- 184,242 ----
errln("Bogus end: " + iterator.getEndIndex());
}
for (int counter = 0; counter < length; counter++) {
iterator.setIndex(counter);
if (!verifyAttributes(iterator.getAttributes().keySet(),
! makeAttributes((List)table.get(Integer.
toString(counter))))) {
errln("Attributes don't match at " + counter + " expecting " +
! makeAttributes((List)table.get(Integer.toString
(counter))) + " got " +
iterator.getAttributes().keySet());
}
}
for (int counter = length - 1; counter >= 0; counter--) {
iterator.setIndex(counter);
if (!verifyAttributes(iterator.getAttributes().keySet(),
! makeAttributes((List)table.get(Integer.
toString(counter))))) {
errln("Attributes don't match at " + counter + " expecting " +
! makeAttributes((List)table.get(Integer.toString
(counter))) + " got " +
iterator.getAttributes().keySet());
}
}
verifyLimits(iterator, table);
text = escapeIfNecessary((String)table.get("text"));
! List<Object> fps = (List)table.get("fieldPositions");
if (fps != null) {
for (int counter = 0; counter < fps.size(); counter++) {
! verifyFieldPosition(counter,(Map)fps.get(counter));
}
}
}
+ @SuppressWarnings("unchecked")
private void verifyLimits(AttributedCharacterIterator iterator,
! Map<String,Object> table) {
! List<Object> limits = (List)table.get("limits");
if (limits != null) {
for (int counter = 0; counter < limits.size(); counter++) {
! verifyLimit(iterator, (Map)limits.get(counter));
}
}
}
private void verifyLimit(AttributedCharacterIterator iterator,
! Map<String,Object> table) {
int begin = Integer.parseInt((String)table.get("begin"));
int end = Integer.parseInt((String)table.get("end"));
! @SuppressWarnings("unchecked")
! Set<Attribute> attrs = makeAttributes((List)table.get("attributes"));
String begin2S = (String)table.get("begin2");
int begin2 = (begin2S != null) ? Integer.parseInt(begin2S) : begin;
String end2S = (String)table.get("end2");
int end2 = (end2S != null) ? Integer.parseInt(end2S) : end;
*** 260,272 ****
" attrs " + attrs);
}
}
}
! private boolean verifyAttributes(Set a, Set b) {
! boolean aEmpty = (a.size() == 0);
! boolean bEmpty = (b.size() == 0);
if (aEmpty && bEmpty) {
return true;
}
else if (aEmpty || bEmpty) {
--- 263,275 ----
" attrs " + attrs);
}
}
}
! private boolean verifyAttributes(Set<Attribute> a, Set<Attribute> b) {
! boolean aEmpty = a.isEmpty();
! boolean bEmpty = b.isEmpty();
if (aEmpty && bEmpty) {
return true;
}
else if (aEmpty || bEmpty) {
*** 282,299 ****
buffer.append(iterator.setIndex(counter));
}
return buffer.toString();
}
! private void verifyFieldPosition(int index, Hashtable table) {
Object o = table.get("field");
int begin = Integer.parseInt((String)table.get("begin"));
int end = Integer.parseInt((String)table.get("end"));
if (o != null) {
FieldPosition fp = new FieldPosition(((Integer)
! lookupField((String)o)).intValue());
verifyFieldPosition(fp, begin, end, index);
}
o = table.get("fieldID");
if (o != null) {
--- 285,302 ----
buffer.append(iterator.setIndex(counter));
}
return buffer.toString();
}
! private void verifyFieldPosition(int index, Map<String,Object> table) {
Object o = table.get("field");
int begin = Integer.parseInt((String)table.get("begin"));
int end = Integer.parseInt((String)table.get("end"));
if (o != null) {
FieldPosition fp = new FieldPosition(((Integer)
! lookupField((String)o)));
verifyFieldPosition(fp, begin, end, index);
}
o = table.get("fieldID");
if (o != null) {
*** 320,334 ****
errln("Text does not match, want !" + buffer.toString() +
"! got !" + text + "!");
}
}
! public AttributedCharacterIterator create(Hashtable table) {
format = (Format)createInstance((String)table.get("class"),
! ((Vector)table.get("args")).toArray());
value = createInstance((String)table.get("valueClass"),
! ((Vector)table.get("valueArgs")).toArray());
logln("Created format: " + format + " value " + value);
AttributedCharacterIterator aci = format.
formatToCharacterIterator(value);
--- 323,337 ----
errln("Text does not match, want !" + buffer.toString() +
"! got !" + text + "!");
}
}
! public AttributedCharacterIterator create(Map<String,Object> table) {
format = (Format)createInstance((String)table.get("class"),
! ((List)table.get("args")).toArray());
value = createInstance((String)table.get("valueClass"),
! ((List)table.get("valueArgs")).toArray());
logln("Created format: " + format + " value " + value);
AttributedCharacterIterator aci = format.
formatToCharacterIterator(value);
*** 341,355 ****
}
private Object createInstance(String className, Object[] args) {
if (className.equals("java.lang.reflect.Array")) {
for (int counter = 0; counter < args.length; counter++) {
! if (args[counter] instanceof Vector) {
! Vector v = (Vector)args[counter];
args[counter] = createInstance((String)v.get(0),
! ((Vector)v.get(1)).toArray());
}
}
return args;
}
for (int counter = 0; counter < args.length; counter++) {
--- 344,359 ----
}
private Object createInstance(String className, Object[] args) {
if (className.equals("java.lang.reflect.Array")) {
for (int counter = 0; counter < args.length; counter++) {
! if (args[counter] instanceof List) {
! @SuppressWarnings("unchecked")
! List<Object> v = (List<Object>)args[counter];
args[counter] = createInstance((String)v.get(0),
! ((List)v.get(1)).toArray());
}
}
return args;
}
for (int counter = 0; counter < args.length; counter++) {
*** 359,405 ****
if (className.equals("java.util.concurrent.atomic.AtomicInteger")) {
return new AtomicInteger(Integer.valueOf((String)args[0]));
} else if (className.equals("java.util.concurrent.atomic.AtomicLong")) {
return new AtomicLong(Long.valueOf((String)args[0]));
} else {
! Class klass = lookupClass(className);
! Constructor cons = klass.getConstructor(
! new Class[] { String.class });
Object value = cons.newInstance(args);
return value;
}
} catch (Throwable th) {
errln("Error creating instance " + th);
return null;
}
}
! private Class lookupClass(String name) throws ClassNotFoundException {
try {
! Class klass = Class.forName(name);
return klass;
} catch (ClassNotFoundException e1) {}
try {
! Class klass = Class.forName("java.lang." + name);
return klass;
} catch (ClassNotFoundException e1) {}
! Class klass = Class.forName("java.text." + name);
return klass;
}
private Object lookupField(String name) {
Throwable error = null;
try {
int dotIndex = name.indexOf('.');
! Class klass = lookupClass(name.substring(0, dotIndex));
String fieldName = name.substring(dotIndex + 1);
Field[] fields = klass.getFields();
for (int counter = fields.length - 1; counter >= 0; counter--) {
if (fields[counter].getName().equals(fieldName)) {
--- 363,409 ----
if (className.equals("java.util.concurrent.atomic.AtomicInteger")) {
return new AtomicInteger(Integer.valueOf((String)args[0]));
} else if (className.equals("java.util.concurrent.atomic.AtomicLong")) {
return new AtomicLong(Long.valueOf((String)args[0]));
} else {
! Class<?> klass = lookupClass(className);
! Constructor<?> cons = klass.getConstructor(
! new Class<?>[] { String.class });
Object value = cons.newInstance(args);
return value;
}
} catch (Throwable th) {
errln("Error creating instance " + th);
return null;
}
}
! private Class<?> lookupClass(String name) throws ClassNotFoundException {
try {
! Class<?> klass = Class.forName(name);
return klass;
} catch (ClassNotFoundException e1) {}
try {
! Class<?> klass = Class.forName("java.lang." + name);
return klass;
} catch (ClassNotFoundException e1) {}
! Class<?> klass = Class.forName("java.text." + name);
return klass;
}
private Object lookupField(String name) {
Throwable error = null;
try {
int dotIndex = name.indexOf('.');
! Class<?> klass = lookupClass(name.substring(0, dotIndex));
String fieldName = name.substring(dotIndex + 1);
Field[] fields = klass.getFields();
for (int counter = fields.length - 1; counter >= 0; counter--) {
if (fields[counter].getName().equals(fieldName)) {
*** 427,438 ****
}
}
return string;
}
! public Set makeAttributes(Vector names) {
! HashSet set = new HashSet(Math.max(1, names.size()));
for (int counter = 0; counter < names.size(); counter++) {
set.add(makeAttribute((String)names.get(counter)));
}
return set;
--- 431,442 ----
}
}
return string;
}
! public Set<Attribute> makeAttributes(List<Object> names) {
! Set<Attribute> set = new HashSet<>(Math.max(1, names.size()));
for (int counter = 0; counter < names.size(); counter++) {
set.add(makeAttribute((String)names.get(counter)));
}
return set;
< prev index next >