Skip to content

Commit

Permalink
Merge pull request #941 from tlantz/fix-message-hashcode-equals-consi…
Browse files Browse the repository at this point in the history
…stency

Make Message.hashCode Consistent with Message.equals
  • Loading branch information
sameb committed Dec 22, 2015
2 parents b18f23f + d20bf5b commit fb01e99
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 1 deletion.
2 changes: 1 addition & 1 deletion core/src/com/google/inject/spi/Message.java
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ public Throwable getCause() {
}

@Override public int hashCode() {
return message.hashCode();
return Objects.hashCode(message, cause, sources);
}

@Override public boolean equals(Object o) {
Expand Down
2 changes: 2 additions & 0 deletions core/test/com/google/inject/AllTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import com.google.inject.spi.HasDependenciesTest;
import com.google.inject.spi.InjectionPointTest;
import com.google.inject.spi.InjectorSpiTest;
import com.google.inject.spi.MessageTest;
import com.google.inject.spi.ModuleAnnotatedMethodScannerTest;
import com.google.inject.spi.ModuleRewriterTest;
import com.google.inject.spi.ModuleSourceTest;
Expand Down Expand Up @@ -134,6 +135,7 @@ public static Test suite() {
suite.addTestSuite(ToolStageInjectorTest.class);
suite.addTestSuite(ModuleSourceTest.class);
suite.addTestSuite(ElementSourceTest.class);
suite.addTestSuite(MessageTest.class);

// tools
// suite.addTestSuite(JmxTest.class); not a testcase
Expand Down
29 changes: 29 additions & 0 deletions core/test/com/google/inject/spi/MessageTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.google.inject.spi;

import com.google.common.collect.Lists;
import junit.framework.TestCase;

import java.util.List;

/**
* Tests for {@link Message}.
*/
public class MessageTest extends TestCase {

public void testMessageHashCodeVariesWithSource() {
String innerMessage = "This is the message.";
Message firstMessage = new Message(1, innerMessage);
Message secondMessage = new Message(2, innerMessage);
assertFalse(firstMessage.hashCode() == secondMessage.hashCode());
}

public void testMessageHashCodeVariesWithCause() {
String innerMessage = "This is the message.";
List<Object> sourceList = Lists.newArrayList(new Object());
// the throwable argument of each Message below do not have value equality
Message firstMessage = new Message(sourceList, innerMessage, new Exception(innerMessage));
Message secondMessage = new Message(sourceList, innerMessage, new Exception(innerMessage));
assertFalse(firstMessage.hashCode() == secondMessage.hashCode());
}
}

0 comments on commit fb01e99

Please sign in to comment.