From 1cc0cf236c5c7eb883a70d6968c20af7bef9bb66 Mon Sep 17 00:00:00 2001 From: Adrian Brink Date: Tue, 23 Jan 2018 13:10:06 +0100 Subject: [PATCH] Add tests for coins --- types/coin.go | 6 +----- types/coin_test.go | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/types/coin.go b/types/coin.go index 3a2c495cf..eebec4896 100644 --- a/types/coin.go +++ b/types/coin.go @@ -72,10 +72,7 @@ func (coins Coins) IsValid() bool { } } -// Plus combines to sets of coins -// -// TODO: handle empty coins! -// Currently appends an empty coin ... +// Plus combines two sets of coins func (coins Coins) Plus(coinsB Coins) Coins { sum := []Coin{} indexA, indexB := 0, 0 @@ -110,7 +107,6 @@ func (coins Coins) Plus(coinsB Coins) Coins { indexB++ } } - return sum } // Negative returns a set of coins with all amount negative diff --git a/types/coin_test.go b/types/coin_test.go index 9153d72a5..3c85b5fed 100644 --- a/types/coin_test.go +++ b/types/coin_test.go @@ -52,7 +52,28 @@ func TestCoins(t *testing.T) { } -//Test the parse coin and parse coins functionality +func TestPlusCoins(t *testing.T) { + assert := assert.New(t) + + cases := []struct { + inputOne Coins + inputTwo Coins + expected Coins + }{ + {Coins{{"A", 1}, {"B", 1}}, Coins{{"A", 1}, {"B", 1}}, Coins{{"A", 2}, {"B", 2}}}, + {Coins{{"A", 0}, {"B", 1}}, Coins{{"A", 0}, {"B", 0}}, Coins{{"B", 1}}}, + {Coins{{"A", 0}, {"B", 0}}, Coins{{"A", 0}, {"B", 0}}, Coins{}}, + {Coins{{"A", 1}, {"B", 0}}, Coins{{"A", -1}, {"B", 0}}, Coins{}}, + } + + for _, tc := range cases { + res := tc.inputOne.Plus(tc.inputTwo) + assert.True(res.IsValid()) + assert.Equal(res, tc.expected) + } +} + +//Test the parsing of Coin and Coins func TestParse(t *testing.T) { cases := []struct {