lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler" <>
Subject RE: [JENKINS] Lucene-Solr-trunk-Linux-Java8-64 - Build # 15 - Failure!
Date Sat, 14 Jul 2012 12:20:20 GMT

> "... tests doing Map.toString() and compare against a hardcoded String
> is of course wrong for HashMaps or HashSets because order is undefined)."
> Map.toString sounds like a great operation to forbid in Solr/Lucene,
> in tests. Although Map.toString is still helpful for debug/logging, what
> really be helpful are two things: 1) display the map sorted/ordered by
key, and
> 2) compare two maps for equality (build a map to compare against rather
> using a presumed toString value.) And, an "assertMapEquals" method as
> Maybe even a "assertMapKeys" method that simply verifies that the keys of
> map are "equal" to a list of keys (set equality but not order.)

assertMapEquals can be done with assertEquals easily, you just have to pass
a full map as comparison base:

	assertEquals("map differs", new HashMap() {{ map.put(...);....}},

For Sets it is much easier:

	assertEquals("set differs", new HashSet(Arrays.asList(<items>)),

The semantics of Map/Set.equals() (see interface docs) explicitely specify
that any type of Map or Set must compare against another one, so you can
compare a TreeMap against a HashMap for equality.

If you want to compare by String and you only have a HashMap/HashSet, the
trick is:

	assertEquals("map differs", "{items....}", new

By that you enforce order (with cloning the map, but that's not a perf
problem in tests).


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message