2020-01-12 15:12:22 +00:00
|
|
|
package keeper
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
2020-04-30 14:23:41 +00:00
|
|
|
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
2020-01-12 15:12:22 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestSplitIntIntoWeightedBuckets(t *testing.T) {
|
|
|
|
testCases := []struct {
|
|
|
|
name string
|
|
|
|
amount sdk.Int
|
|
|
|
buckets []sdk.Int
|
|
|
|
want []sdk.Int
|
|
|
|
}{
|
|
|
|
{"2split1,1", i(2), is(1, 1), is(1, 1)},
|
|
|
|
{"100split1,9", i(100), is(1, 9), is(10, 90)},
|
|
|
|
{"7split1,2", i(7), is(1, 2), is(2, 5)},
|
|
|
|
{"17split1,1,1", i(17), is(1, 1, 1), is(6, 6, 5)},
|
|
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
got := splitIntIntoWeightedBuckets(tc.amount, tc.buckets)
|
|
|
|
require.Equal(t, tc.want, got)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func i(n int64) sdk.Int { return sdk.NewInt(n) }
|
|
|
|
func is(ns ...int64) (is []sdk.Int) {
|
|
|
|
for _, n := range ns {
|
|
|
|
is = append(is, sdk.NewInt(n))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|