From 7af7082ac8ff985ffa3f1462b35dcdb14b08e753 Mon Sep 17 00:00:00 2001 From: Johnny Date: Tue, 18 Dec 2018 14:34:51 +0000 Subject: [PATCH 1/2] Implements equals and hash code overrides for completion proposal --- .../shell/CompletionProposal.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/spring-shell-core/src/main/java/org/springframework/shell/CompletionProposal.java b/spring-shell-core/src/main/java/org/springframework/shell/CompletionProposal.java index ba0d25cd5..6ac28116e 100644 --- a/spring-shell-core/src/main/java/org/springframework/shell/CompletionProposal.java +++ b/spring-shell-core/src/main/java/org/springframework/shell/CompletionProposal.java @@ -16,6 +16,8 @@ package org.springframework.shell; +import java.util.Objects; + /** * Represents a proposal for TAB completion, made not only of the text to append, but also metadata about the proposal. * @@ -102,4 +104,21 @@ public boolean dontQuote() { public String toString() { return value; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CompletionProposal that = (CompletionProposal) o; + return dontQuote == that.dontQuote && + Objects.equals(value, that.value) && + Objects.equals(displayText, that.displayText) && + Objects.equals(description, that.description) && + Objects.equals(category, that.category); + } + + @Override + public int hashCode() { + return Objects.hash(value, displayText, description, category, dontQuote); + } } From 089d7c3450c337906526c61925ecdebdcb2eff4b Mon Sep 17 00:00:00 2001 From: Johnny Date: Tue, 18 Dec 2018 15:34:37 +0000 Subject: [PATCH 2/2] Added simple tests to maintain level of coverage. --- .../shell/CompletionProposalTest.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 spring-shell-core/src/test/java/org/springframework/shell/CompletionProposalTest.java diff --git a/spring-shell-core/src/test/java/org/springframework/shell/CompletionProposalTest.java b/spring-shell-core/src/test/java/org/springframework/shell/CompletionProposalTest.java new file mode 100644 index 000000000..22bec5c5c --- /dev/null +++ b/spring-shell-core/src/test/java/org/springframework/shell/CompletionProposalTest.java @@ -0,0 +1,48 @@ +package org.springframework.shell; + +import org.junit.Before; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.*; + +public class CompletionProposalTest { + + private final String PROPOSAL = "test proposal"; + private final String DESCRIPTION = "description"; + private final String DISPLAY_TEXT = "displayText"; + private final boolean DONT_QUOTE = true; + private final String CATEGORY = "category"; + CompletionProposal completionProposal; + + + @Before + public void setup() { + completionProposal = new CompletionProposal(PROPOSAL); + completionProposal.category(CATEGORY); + completionProposal.description(DESCRIPTION); + completionProposal.displayText(DISPLAY_TEXT); + completionProposal.dontQuote(DONT_QUOTE); + } + + @Test + public void equals() { + CompletionProposal completionProposal2 = new CompletionProposal(PROPOSAL); + completionProposal2.category(CATEGORY); + completionProposal2.description(DESCRIPTION); + completionProposal2.displayText(DISPLAY_TEXT); + completionProposal2.dontQuote(DONT_QUOTE); + + assertThat(completionProposal, is(completionProposal2)); + } + + @Test + public void hashcode() { + CompletionProposal completionProposal2 = new CompletionProposal(PROPOSAL); + completionProposal2.category(CATEGORY); + completionProposal2.description(DESCRIPTION); + completionProposal2.displayText(DISPLAY_TEXT); + completionProposal2.dontQuote(DONT_QUOTE); + assertThat(completionProposal.hashCode(), is(completionProposal2.hashCode())); + } +} \ No newline at end of file