lucene-dev mailing list archives

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

 
> "... tests doing Map.toString() and compare against a hardcoded String
(which
> is of course wrong for HashMaps or HashSets because order is undefined)."
> 
> Map.toString sounds like a great operation to forbid in Solr/Lucene,
especially
> in tests. Although Map.toString is still helpful for debug/logging, what
would
> 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
than
> using a presumed toString value.) And, an "assertMapEquals" method as
well.
> Maybe even a "assertMapKeys" method that simply verifies that the keys of
a
> 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(...);....}},
someMapToTest);

For Sets it is much easier:

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

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
TreeMap(someMapToTest));

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

Uwe


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message