From 12f1670eea5b419ac46f5daab5018dd8cdea60c6 Mon Sep 17 00:00:00 2001 From: Matthew Leon Date: Mon, 25 Mar 2019 21:44:26 -0400 Subject: [PATCH] MonetaryFormat: Fix equals() and hashCode(). --- .../java/org/bitcoinj/utils/MonetaryFormat.java | 4 ++-- .../org/bitcoinj/utils/MonetaryFormatTest.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/bitcoinj/utils/MonetaryFormat.java b/core/src/main/java/org/bitcoinj/utils/MonetaryFormat.java index a0287086..c364fd3e 100644 --- a/core/src/main/java/org/bitcoinj/utils/MonetaryFormat.java +++ b/core/src/main/java/org/bitcoinj/utils/MonetaryFormat.java @@ -489,7 +489,7 @@ public final class MonetaryFormat { return false; if (!Objects.equals(this.roundingMode, other.roundingMode)) return false; - if (!Objects.equals(this.codes, other.codes)) + if (!Arrays.equals(this.codes, other.codes)) return false; if (!Objects.equals(this.codeSeparator, other.codeSeparator)) return false; @@ -501,6 +501,6 @@ public final class MonetaryFormat { @Override public int hashCode() { return Objects.hash(negativeSign, positiveSign, zeroDigit, decimalMark, minDecimals, decimalGroups, shift, - roundingMode, codes, codeSeparator, codePrefixed); + roundingMode, Arrays.hashCode(codes), codeSeparator, codePrefixed); } } diff --git a/core/src/test/java/org/bitcoinj/utils/MonetaryFormatTest.java b/core/src/test/java/org/bitcoinj/utils/MonetaryFormatTest.java index 617a60f0..078b49d9 100644 --- a/core/src/test/java/org/bitcoinj/utils/MonetaryFormatTest.java +++ b/core/src/test/java/org/bitcoinj/utils/MonetaryFormatTest.java @@ -352,4 +352,18 @@ public class MonetaryFormatTest { public void fiat() throws Exception { assertEquals(ONE_EURO, NO_CODE.parseFiat("EUR", "1")); } + + @Test + public void testEquals() { + MonetaryFormat mf1 = new MonetaryFormat(true); + MonetaryFormat mf2 = new MonetaryFormat(true); + assertEquals(mf1, mf2); + } + + @Test + public void testHashCode() { + MonetaryFormat mf1 = new MonetaryFormat(true); + MonetaryFormat mf2 = new MonetaryFormat(true); + assertEquals(mf1.hashCode(), mf2.hashCode()); + } }