You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@opennlp.apache.org by Jörn Kottmann <ko...@gmail.com> on 2011/08/17 10:43:34 UTC
Re: svn commit: r1158089 - /incubator/opennlp/trunk/opennlp-tools/src/test/java/opennlp/tools/dictionary/DictionaryTest.java
Hi,
the hash code of two dictionaries does not have to be equals,
if the case is different.
So we should remove these lines:
assertEquals(dictB.hashCode(), dictC.hashCode());
and if that works its ok, but that could change:
assertEquals(dictC.hashCode(), dictD.hashCode())
Anyway the question is, do we consider two dictionaries
with a different case flag to be equals?
I believe we shouldn't because they behave different.
Any other opinions?
Jörn
On 8/16/11 4:15 AM, jkosin@apache.org wrote:
> + /**
> * Tests serialization and deserailization of the {@link Dictionary}.
> *
> * @throws IOException
> @@ -154,14 +174,23 @@ public class DictionaryTest {
> @Test
> public void testHashCode() {
> StringList entry1 = new StringList(new String[]{"1a", "1b"});
> + StringList entry2 = new StringList(new String[]{"1A", "1B"});
>
> Dictionary dictA = getCaseInsensitive();
> dictA.put(entry1);
>
> Dictionary dictB = getCaseInsensitive();
> - dictB.put(entry1);
> + dictB.put(entry2);
> +
> + Dictionary dictC = getCaseSensitive();
> + dictC.put(entry1);
> +
> + Dictionary dictD = getCaseSensitive();
> + dictD.put(entry2);
>
> assertEquals(dictA.hashCode(), dictB.hashCode());
> + assertEquals(dictB.hashCode(), dictC.hashCode());
> + assertEquals(dictC.hashCode(), dictD.hashCode());
> }
Re: svn commit: r1158089 - /incubator/opennlp/trunk/opennlp-tools/src/test/java/opennlp/tools/dictionary/DictionaryTest.java
Posted by James Kosin <ja...@gmail.com>.
I'm only checking on what it already does which is to use the lower-case
hashCode() for all the strings regardless of the isCaseSensitive flag
and regardless of the flag itself.
Easily changed, but, don't know what the original intent was....
+1 : For changing and no one is relying on all dictionaries built with
different case sensitivity to return the same hashCode().
James
On 8/17/2011 4:43 AM, Jörn Kottmann wrote:
> Hi,
>
> the hash code of two dictionaries does not have to be equals,
> if the case is different.
>
> So we should remove these lines:
> assertEquals(dictB.hashCode(), dictC.hashCode());
>
> and if that works its ok, but that could change:
> assertEquals(dictC.hashCode(), dictD.hashCode())
>
> Anyway the question is, do we consider two dictionaries
> with a different case flag to be equals?
>
> I believe we shouldn't because they behave different.
> Any other opinions?
>
> Jörn
>
> On 8/16/11 4:15 AM, jkosin@apache.org wrote:
>> + /**
>> * Tests serialization and deserailization of the {@link
>> Dictionary}.
>> *
>> * @throws IOException
>> @@ -154,14 +174,23 @@ public class DictionaryTest {
>> @Test
>> public void testHashCode() {
>> StringList entry1 = new StringList(new String[]{"1a", "1b"});
>> + StringList entry2 = new StringList(new String[]{"1A", "1B"});
>>
>> Dictionary dictA = getCaseInsensitive();
>> dictA.put(entry1);
>>
>> Dictionary dictB = getCaseInsensitive();
>> - dictB.put(entry1);
>> + dictB.put(entry2);
>> +
>> + Dictionary dictC = getCaseSensitive();
>> + dictC.put(entry1);
>> +
>> + Dictionary dictD = getCaseSensitive();
>> + dictD.put(entry2);
>>
>> assertEquals(dictA.hashCode(), dictB.hashCode());
>> + assertEquals(dictB.hashCode(), dictC.hashCode());
>> + assertEquals(dictC.hashCode(), dictD.hashCode());
>> }
>