Index: test/java/org/apache/jdo/tck/models/fieldtypes/TestMapStringValueCollections.java =================================================================== --- test/java/org/apache/jdo/tck/models/fieldtypes/TestMapStringValueCollections.java (revision 345168) +++ test/java/org/apache/jdo/tck/models/fieldtypes/TestMapStringValueCollections.java (working copy) @@ -173,22 +173,31 @@ else if (! expected.equals(actual)) { if (TestUtil.getFieldSpecsForMap( MapStringValueCollections.fieldSpecs[i] - ).get(1).equals("BigDecimal")) { - Set keys = expected.keySet(); - Iterator iter = keys.iterator(); - while (iter.hasNext()) { - Object nextKey = iter.next(); - BigDecimal expectedMapValue = - (BigDecimal)expected.get(nextKey); - BigDecimal actualMapValue = - (BigDecimal)actual.get(nextKey); - if ((expectedMapValue.compareTo(actualMapValue) != 0)) { - sbuf.append("\nFor element " + i + "(" - + (String)nextKey + - "), expected = " + expectedMapValue + - ", actual = " + actualMapValue + " . "); + ).get(0).equals("BigDecimal")) { + Set expectedKeySet = expected.keySet(); + Set actualKeySet = actual.keySet(); + Iterator expectedIter = expectedKeySet.iterator(); + while (expectedIter.hasNext()) { + BigDecimal expectedKey = (BigDecimal) expectedIter.next(); + // compare keys + if (!TestUtil.containsBigDecimalKey(expectedKey, actualKeySet)) { + sbuf.append("\nFor element " + i + + " expected key = " + expectedKey + + " not found in actual Map. Actual keyset is " + + actualKeySet.toString()); + // compare values + } else { + String expectedVal = (String) expected.get(expectedKey); + String actualValue = (String) + actual.get(TestUtil.getBigDecimalKey(expectedKey, + actualKeySet)); + if (!expectedVal.equals(actualValue)) { + sbuf.append("\nFor element " + i + + " expected value = " + expectedVal + + " actual Value = " + actualValue); + } + } } - } } else { sbuf.append("\nFor element " + i + ", expected = " + Index: test/java/org/apache/jdo/tck/models/fieldtypes/TestHashtableStringValueCollections.java =================================================================== --- test/java/org/apache/jdo/tck/models/fieldtypes/TestHashtableStringValueCollections.java (revision 345168) +++ test/java/org/apache/jdo/tck/models/fieldtypes/TestHashtableStringValueCollections.java (working copy) @@ -168,22 +168,31 @@ else if (! expected.equals(actual)) { if (TestUtil.getFieldSpecsForMap( HashtableStringValueCollections.fieldSpecs[i] - ).get(1).equals("BigDecimal")) { - Set keys = expected.keySet(); - Iterator iter = keys.iterator(); - while (iter.hasNext()) { - Object nextKey = iter.next(); - BigDecimal expectedMapValue = - (BigDecimal)expected.get(nextKey); - BigDecimal actualMapValue = - (BigDecimal)actual.get(nextKey); - if ((expectedMapValue.compareTo(actualMapValue) != 0)) { - sbuf.append("\nFor element " + i + "(" - + (String)nextKey + - "), expected = " + expectedMapValue + - ", actual = " + actualMapValue + " . "); + ).get(0).equals("BigDecimal")) { + Set expectedKeySet = expected.keySet(); + Set actualKeySet = actual.keySet(); + Iterator expectedIter = expectedKeySet.iterator(); + while (expectedIter.hasNext()) { + BigDecimal expectedKey = (BigDecimal) expectedIter.next(); + // compare keys + if (!TestUtil.containsBigDecimalKey(expectedKey, actualKeySet)) { + sbuf.append("\nFor element " + i + + " expected key = " + expectedKey + + " not found in actual Map. Actual keyset is " + + actualKeySet.toString()); + // compare values + } else { + String expectedVal = (String) expected.get(expectedKey); + String actualValue = (String) + actual.get(TestUtil.getBigDecimalKey(expectedKey, + actualKeySet)); + if (!expectedVal.equals(actualValue)) { + sbuf.append("\nFor element " + i + + " expected value = " + expectedVal + + " actual Value = " + actualValue); + } + } } - } } else { sbuf.append("\nFor element " + i + ", expected = " + Index: test/java/org/apache/jdo/tck/models/fieldtypes/TestHashMapStringValueCollections.java =================================================================== --- test/java/org/apache/jdo/tck/models/fieldtypes/TestHashMapStringValueCollections.java (revision 345168) +++ test/java/org/apache/jdo/tck/models/fieldtypes/TestHashMapStringValueCollections.java (working copy) @@ -169,22 +169,31 @@ else if (! expected.equals(actual)) { if (TestUtil.getFieldSpecsForMap( HashMapStringValueCollections.fieldSpecs[i] - ).get(1).equals("BigDecimal")) { - Set keys = expected.keySet(); - Iterator iter = keys.iterator(); - while (iter.hasNext()) { - Object nextKey = iter.next(); - BigDecimal expectedMapValue = - (BigDecimal)expected.get(nextKey); - BigDecimal actualMapValue = - (BigDecimal)actual.get(nextKey); - if ((expectedMapValue.compareTo(actualMapValue) != 0)) { - sbuf.append("\nFor element " + i + "(" - + (String)nextKey + - "), expected = " + expectedMapValue + - ", actual = " + actualMapValue + " . "); + ).get(0).equals("BigDecimal")) { + Set expectedKeySet = expected.keySet(); + Set actualKeySet = actual.keySet(); + Iterator expectedIter = expectedKeySet.iterator(); + while (expectedIter.hasNext()) { + BigDecimal expectedKey = (BigDecimal) expectedIter.next(); + // compare keys + if (!TestUtil.containsBigDecimalKey(expectedKey, actualKeySet)) { + sbuf.append("\nFor element " + i + + " expected key = " + expectedKey + + " not found in actual Map. Actual keyset is " + + actualKeySet.toString()); + // compare values + } else { + String expectedVal = (String) expected.get(expectedKey); + String actualValue = (String) + actual.get(TestUtil.getBigDecimalKey(expectedKey, + actualKeySet)); + if (!expectedVal.equals(actualValue)) { + sbuf.append("\nFor element " + i + + " expected value = " + expectedVal + + " actual Value = " + actualValue); + } + } } - } } else { sbuf.append("\nFor element " + i + ", expected = " + Index: test/java/org/apache/jdo/tck/models/fieldtypes/TestUtil.java =================================================================== --- test/java/org/apache/jdo/tck/models/fieldtypes/TestUtil.java (revision 345168) +++ test/java/org/apache/jdo/tck/models/fieldtypes/TestUtil.java (working copy) @@ -319,5 +319,31 @@ default: throw new IndexOutOfBoundsException(); } - } + } + + protected static boolean containsBigDecimalKey(BigDecimal keyValue, + Set bigDecimalKeySet) + { + Iterator iter = bigDecimalKeySet.iterator(); + while (iter.hasNext()) { + BigDecimal nextVal = (BigDecimal) iter.next(); + if (keyValue.compareTo(nextVal) == 0) { + return true; + } + } + return false; + } + + protected static BigDecimal getBigDecimalKey(BigDecimal keyValue, + Set bigDecimalKeySet) + { + Iterator iter = bigDecimalKeySet.iterator(); + while (iter.hasNext()) { + BigDecimal nextVal = (BigDecimal) iter.next(); + if (keyValue.compareTo(nextVal) == 0) { + return nextVal; + } + } + return null; + } } Index: test/java/org/apache/jdo/tck/models/fieldtypes/TestTreeMapStringValueCollections.java =================================================================== --- test/java/org/apache/jdo/tck/models/fieldtypes/TestTreeMapStringValueCollections.java (revision 345168) +++ test/java/org/apache/jdo/tck/models/fieldtypes/TestTreeMapStringValueCollections.java (working copy) @@ -166,28 +166,37 @@ else if (! expected.equals(actual)) { if (TestUtil.getFieldSpecsForMap( TreeMapStringValueCollections.fieldSpecs[i] - ).get(1).equals("BigDecimal")) { - Set keys = expected.keySet(); - Iterator iter = keys.iterator(); - while (iter.hasNext()) { - Object nextKey = iter.next(); - BigDecimal expectedMapValue = - (BigDecimal)expected.get(nextKey); - BigDecimal actualMapValue = - (BigDecimal)actual.get(nextKey); - if ((expectedMapValue.compareTo(actualMapValue) != 0)) { - sbuf.append("\nFor element " + i + "(" - + (String)nextKey + - "), expected = " + expectedMapValue + - ", actual = " + actualMapValue + " . "); + ).get(0).equals("BigDecimal")) { + Set expectedKeySet = expected.keySet(); + Set actualKeySet = actual.keySet(); + Iterator expectedIter = expectedKeySet.iterator(); + while (expectedIter.hasNext()) { + BigDecimal expectedKey = (BigDecimal) expectedIter.next(); + // compare keys + if (!TestUtil.containsBigDecimalKey(expectedKey, actualKeySet)) { + sbuf.append("\nFor element " + i + + " expected key = " + expectedKey + + " not found in actual Map. Actual keyset is " + + actualKeySet.toString()); + // compare values + } else { + String expectedVal = (String) expected.get(expectedKey); + String actualValue = (String) + actual.get(TestUtil.getBigDecimalKey(expectedKey, + actualKeySet)); + if (!expectedVal.equals(actualValue)) { + sbuf.append("\nFor element " + i + + " expected value = " + expectedVal + + " actual Value = " + actualValue); + } + } } } - } - else { + else { sbuf.append("\nFor element " + i + ", expected = " + expected + ", actual = " + actual + " . "); + } } - } } if (sbuf.length() > 0) { fail(ASSERTION_FAILED,