X-Git-Url: http://jaekl.net/gitweb/?a=blobdiff_plain;f=prod%2Fnet%2Fjaekl%2Fcfb%2Futil%2FUtil.java;h=99ef6e846f78b9b082cfbbc7d4e8db7f94e9fae6;hb=a4a577abc3f9b2b1147caafd1cb39fa8c2622cd4;hp=309e20dde6e74fd672074cde15ad87aa041a6803;hpb=358d80a86ac7c79cd57b81a4f1708da80db2f0ec;p=cfb.git diff --git a/prod/net/jaekl/cfb/util/Util.java b/prod/net/jaekl/cfb/util/Util.java index 309e20d..99ef6e8 100644 --- a/prod/net/jaekl/cfb/util/Util.java +++ b/prod/net/jaekl/cfb/util/Util.java @@ -4,14 +4,38 @@ package net.jaekl.cfb.util; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.Iterator; +import java.util.List; public class Util { - public static String stringify(Throwable thr) + // Returns true iff. a and b contain equal items in the same order + public static boolean listsAreEqual(List a, List b) { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - thr.printStackTrace(pw); - return sw.toString(); + if ((null == a) || (null == b)) { + return (a == b); + } + + if (0 == a.size()) { + return (0 == b.size()); + } + + if (a.size() != b.size()) { + return false; + } + + Iterator iterA = a.iterator(); + Iterator iterB = b.iterator(); + + while (iterA.hasNext()) { + Object elemA = iterA.next(); + Object elemB = iterB.next(); + + if (! objsAreEqual(elemA, elemB)) { + return false; + } + } + + return true; } // Test for equality, while taking care to avoid @@ -23,6 +47,14 @@ public class Util { return (a == b); } + if ((a instanceof Number) && (b instanceof Number)) { + Number aNum = (Number)a; + Number bNum = (Number)b; + + return ( (aNum.longValue() == bNum.longValue()) + || (aNum.doubleValue() == bNum.doubleValue()) ); + } + return a.equals(b); } @@ -34,4 +66,14 @@ public class Util { } return obj.hashCode(); } + + // Convert a Throwable to the string representation + // that is generated by printStackTrace(). + public static String stringify(Throwable thr) + { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + thr.printStackTrace(pw); + return sw.toString(); + } }