Merge PR #4281: Fix addGenesisAccount
This commit is contained in:
@@ -368,6 +368,29 @@ func (coins Coins) IsAllLTE(coinsB Coins) bool {
|
||||
return coinsB.IsAllGTE(coins)
|
||||
}
|
||||
|
||||
// IsAnyGT returns true iff for any denom in coins, the denom is present at a
|
||||
// greater amount in coinsB.
|
||||
//
|
||||
// e.g.
|
||||
// {2A, 3B}.IsAnyGT{A} = true
|
||||
// {2A, 3B}.IsAnyGT{5C} = false
|
||||
// {}.IsAnyGT{5C} = false
|
||||
// {2A, 3B}.IsAnyGT{} = false
|
||||
func (coins Coins) IsAnyGT(coinsB Coins) bool {
|
||||
if len(coinsB) == 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
for _, coin := range coins {
|
||||
amt := coinsB.AmountOf(coin.Denom)
|
||||
if coin.Amount.GT(amt) && !amt.IsZero() {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// IsAnyGTE returns true iff coins contains at least one denom that is present
|
||||
// at a greater or equal amount in coinsB; it returns false otherwise.
|
||||
//
|
||||
|
||||
@@ -574,3 +574,22 @@ func TestNewCoins(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCoinsIsAnyGT(t *testing.T) {
|
||||
twoAtom := NewInt64Coin("atom", 2)
|
||||
fiveAtom := NewInt64Coin("atom", 5)
|
||||
threeEth := NewInt64Coin("eth", 3)
|
||||
sixEth := NewInt64Coin("eth", 6)
|
||||
twoBtc := NewInt64Coin("btc", 2)
|
||||
|
||||
require.False(t, Coins{}.IsAnyGT(Coins{}))
|
||||
|
||||
require.False(t, Coins{fiveAtom}.IsAnyGT(Coins{}))
|
||||
require.False(t, Coins{}.IsAnyGT(Coins{fiveAtom}))
|
||||
require.True(t, Coins{fiveAtom}.IsAnyGT(Coins{twoAtom}))
|
||||
require.False(t, Coins{twoAtom}.IsAnyGT(Coins{fiveAtom}))
|
||||
|
||||
require.True(t, Coins{twoAtom, sixEth}.IsAnyGT(Coins{twoBtc, fiveAtom, threeEth}))
|
||||
require.False(t, Coins{twoBtc, twoAtom, threeEth}.IsAnyGT(Coins{fiveAtom, sixEth}))
|
||||
require.False(t, Coins{twoAtom, sixEth}.IsAnyGT(Coins{twoBtc, fiveAtom}))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user