From 30c86811c037ffa9adec44ed6015d442752348c8 Mon Sep 17 00:00:00 2001 From: stleary Date: Thu, 23 Apr 2015 21:42:04 -0500 Subject: [PATCH] improved object comparison --- Util.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Util.java b/Util.java index 71f6c0d..635b7a6 100644 --- a/Util.java +++ b/Util.java @@ -64,6 +64,20 @@ public class Util { compareActualVsExpectedJsonArrays( jsonArray, expectedJsonArray); } else { + /** + * Certain helper classes (e.g. XML) may create Long instead of + * Integer for small int values. As long as both are Numbers, + * just compare the toString() values. + */ + if (!(value instanceof Number && expectedValue instanceof Number)) { + assertTrue("object types should be equal for actual: "+ + value.toString()+" ("+ + value.getClass().toString()+") expected: "+ + expectedValue.toString()+" ("+ + expectedValue.getClass().toString()+")", + value.getClass().toString().equals( + expectedValue.getClass().toString())); + } assertTrue("string values should be equal for actual: "+ value.toString()+" expected: "+expectedValue.toString(), value.toString().equals(expectedValue.toString())); @@ -83,4 +97,13 @@ public class Util { } } + public static void compareXML(String aXmlStr, String bXmlStr) { + // TODO For simple tests this may be adequate, but it won't work for + // elements with multiple attributes and possibly other cases as well. + // Should use XMLUnit or similar. + assertTrue("expected equal XML strings \naXmlStr: "+ + aXmlStr+ "\nbXmlStr: " +bXmlStr, aXmlStr.equals(bXmlStr)); + + } + }