private static void assertEquals (Object expected, Object actual) {
if (expected instanceof List) {
Assert.assertTrue("Expected a list, but didn't get one", actual instanceof List);
List<?> eList = (List<?>) expected;
List<?> aList = (List<?>) actual;
Assert.assertEquals(eList.size(), aList.size());
for (int i=0; i<eList.size(); ++i) {
assertEquals(eList.get(i), aList.get(i));
}
} else if (expected instanceof Map) {
Assert.assertTrue("Expected a map, but didn't get one", actual instanceof Map);
Map<?, ?> eMap = (Map<?, ?>) expected;
Map<?, ?> aMap = (Map<?, ?>) actual;
Assert.assertEquals(eMap.size(), aMap.size());
for (Object key: eMap.keySet()) {
Assert.assertTrue(aMap.containsKey(key));
assertEquals(eMap.get(key), aMap.get(key));
}
} else {
Assert.assertEquals(expected, actual);
}
}
}