From d3804774d4a3c06b83bbdd4737c840a58a0021ed Mon Sep 17 00:00:00 2001 From: Dev Ojha Date: Wed, 2 Jan 2019 13:14:12 -0600 Subject: [PATCH] Fix is_valid bug (#3211) --- types/coin.go | 6 ++---- types/coin_test.go | 10 ++++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/types/coin.go b/types/coin.go index e569674026..55a479748f 100644 --- a/types/coin.go +++ b/types/coin.go @@ -140,10 +140,8 @@ func (coins Coins) IsValid() bool { case 1: return coins[0].IsPositive() default: - if strings.ToLower(coins[0].Denom) != coins[0].Denom { - return false - } - if !coins[0].IsPositive() { + // Check single coin case + if !(Coins{coins[0]}).IsValid() { return false } lowDenom := coins[0].Denom diff --git a/types/coin_test.go b/types/coin_test.go index 92036adfca..851d155155 100644 --- a/types/coin_test.go +++ b/types/coin_test.go @@ -251,8 +251,13 @@ func TestMinusCoins(t *testing.T) { func TestCoins(t *testing.T) { good := Coins{ - {"GAS", NewInt(1)}, - {"MINERAL", NewInt(1)}, + {"gas", NewInt(1)}, + {"mineral", NewInt(1)}, + {"tree", NewInt(1)}, + } + mixedCase1 := Coins{ + {"gAs", NewInt(1)}, + {"MineraL", NewInt(1)}, {"TREE", NewInt(1)}, } empty := Coins{ @@ -287,6 +292,7 @@ func TestCoins(t *testing.T) { } assert.True(t, good.IsValid(), "Coins are valid") + assert.False(t, mixedCase1.IsValid(), "Coins denoms contain upper case characters") assert.True(t, good.IsPositive(), "Expected coins to be positive: %v", good) assert.False(t, null.IsPositive(), "Expected coins to not be positive: %v", null) assert.True(t, good.IsAllGTE(empty), "Expected %v to be >= %v", good, empty)