lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jack Krupansky" <>
Subject Re: [JENKINS] Lucene-Solr-trunk-Linux-Java8-64 - Build # 15 - Failure!
Date Sat, 14 Jul 2012 13:16:24 GMT
Formatted exception messages for non-scalar values is highly desirable, if 
not essential. Not just that a map/list does not match, but how it doesn't 
match - missing keys, extra keys, which key values differ (which can be a 
recursive process).

-- Jack Krupansky

-----Original Message----- 
From: Dawid Weiss
Sent: Saturday, July 14, 2012 7:43 AM
Subject: Re: [JENKINS] Lucene-Solr-trunk-Linux-Java8-64 - Build # 15 - 

We use (and like) fest asserts. The syntax is nice but what's even
nicer are formatted exception messages for arrays, maps, etc. so you
get the idea what the mismatch was.

see fluid assertions; or here a new 2.x line of development:


On Sat, Jul 14, 2012 at 2:20 PM, Uwe Schindler <> wrote:
> 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:
> For additional commands, e-mail:

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

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

View raw message