Skip to content

Commit

Permalink
Merge pull request #2065 from rsksmart/fix-hashcode-and-equals
Browse files Browse the repository at this point in the history
Fix hashcode and equals
  • Loading branch information
Vovchyk authored Jul 17, 2023
2 parents af47aaa + 7ad6a1b commit 358a0b6
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
7 changes: 3 additions & 4 deletions rskj-core/src/main/java/org/ethereum/net/rlpx/Node.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,9 @@ public String toString() {
", id=" + getHexId() +
'}';
}

@Override
public int hashCode() {
return Objects.hash(host, port, id);
return Objects.hash(host, port, Arrays.hashCode(id));
}

@Override
Expand All @@ -148,7 +147,7 @@ public boolean equals(Object o) {
return false;
}

// TODO(mc): do we need to check host and port too?
return Arrays.equals(id, ((Node) o).id);
Node node = (Node) o;
return port == node.port && Arrays.equals(id, node.id) && Objects.equals(host, node.host);
}
}
9 changes: 7 additions & 2 deletions rskj-core/src/test/java/org/ethereum/net/rlpx/NodeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.slf4j.LoggerFactory;

import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Expand Down Expand Up @@ -128,16 +129,20 @@ void nodeReturnsExpectedStringValue() {
@Test
void equalsMethodWorksAsExpected() {
Node node1 = new Node(NODE_ID_1, NODE_HOST_1, NODE_PORT_1);
Node node2 = new Node(NODE_ID_1, "www.google.es", NODE_PORT_1);
Node node2 = new Node(NODE_ID_1, NODE_HOST_1, NODE_PORT_1);
Node node3 = new Node(NODE_ID_1, "google.com", NODE_PORT_1);
Node node4 = new Node(NODE_ID_1, NODE_HOST_1, 6667);

assertEquals(node1, node2);
assertNotEquals(node1, new Object());
assertNotEquals(node1, null);
assertNotEquals(node1, node3);
assertNotEquals(node1, node4);
}

@Test
void hashCodeIsUsingHostPortAndIdToBeCalculated() {
int expectedHash = Objects.hash(NODE_HOST_1, NODE_PORT_1, NODE_ID_1);
int expectedHash = Objects.hash(NODE_HOST_1, NODE_PORT_1, Arrays.hashCode(NODE_ID_1));
Node node = new Node(NODE_ID_1, NODE_HOST_1, NODE_PORT_1);
assertEquals(expectedHash, node.hashCode());
}
Expand Down

0 comments on commit 358a0b6

Please sign in to comment.