write test for keeper

This commit is contained in:
mossid 2018-03-29 19:37:04 +02:00 committed by rigelrozanski
parent 4b0c367afa
commit 67a943d9df
1 changed files with 52 additions and 33 deletions

View File

@ -2,7 +2,6 @@ package stake
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
@ -31,14 +30,14 @@ var (
candidate2 = Candidate{ candidate2 = Candidate{
Address: addrVal2, Address: addrVal2,
PubKey: pk2, PubKey: pk2,
Assets: sdk.NewRat(9), Assets: sdk.NewRat(8),
Liabilities: sdk.NewRat(9), Liabilities: sdk.NewRat(8),
} }
candidate3 = Candidate{ candidate3 = Candidate{
Address: addrVal3, Address: addrVal3,
PubKey: pk3, PubKey: pk3,
Assets: sdk.NewRat(9), Assets: sdk.NewRat(7),
Liabilities: sdk.NewRat(9), Liabilities: sdk.NewRat(7),
} }
) )
@ -298,7 +297,7 @@ func TestGetAccUpdateValidators(t *testing.T) {
assert.Equal(t, 0, len(acc)) assert.Equal(t, 0, len(acc))
keeper.setCandidate(ctx, candidates[0]) keeper.setCandidate(ctx, candidates[0])
keeper.setCandidate(ctx, candidates[1]) keeper.setCandidate(ctx, candidates[1])
//_ = keeper.GetValidators(ctx) // to init recent validator set _ = keeper.GetValidators(ctx) // to init recent validator set
acc = keeper.getAccUpdateValidators(ctx) acc = keeper.getAccUpdateValidators(ctx)
validatorsEqual(t, validators, acc) validatorsEqual(t, validators, acc)
@ -309,44 +308,46 @@ func TestGetAccUpdateValidators(t *testing.T) {
validatorsEqual(t, validators, acc) validatorsEqual(t, validators, acc)
acc = keeper.getAccUpdateValidators(ctx) acc = keeper.getAccUpdateValidators(ctx)
fmt.Printf("%+v\n", acc)
// test from something to nothing // test from something to nothing
keeper.removeCandidate(ctx, candidates[0].Address) keeper.removeCandidate(ctx, candidates[0].Address)
keeper.removeCandidate(ctx, candidates[1].Address) keeper.removeCandidate(ctx, candidates[1].Address)
acc = keeper.getAccUpdateValidators(ctx) acc = keeper.getAccUpdateValidators(ctx)
fmt.Printf("%+v\n", acc)
assert.Equal(t, 2, len(acc)) assert.Equal(t, 2, len(acc))
assert.Equal(t, validators[0].Address, acc[0].Address) assert.Equal(t, validators[0].Address, acc[0].Address)
assert.Equal(t, 0, acc[0].VotingPower.Evaluate()) assert.Equal(t, int64(0), acc[0].VotingPower.Evaluate())
assert.Equal(t, validators[1].Address, acc[1].Address) assert.Equal(t, validators[1].Address, acc[1].Address)
assert.Equal(t, 0, acc[1].VotingPower.Evaluate()) assert.Equal(t, int64(0), acc[1].VotingPower.Evaluate())
//// test single value change // test single value change
//amts[0] = 600 amts[0] = 600
//candidates, validators = genCandidates(amts) candidates, validators = genCandidates(amts)
//setCandidates(ctx, candidates) keeper.setCandidate(ctx, candidates[0])
//acc = keeper.getAccUpdateValidators(ctx) keeper.setCandidate(ctx, candidates[1])
//validatorsEqual(t, validators, acc) acc = keeper.getAccUpdateValidators(ctx)
validatorsEqual(t, validators, acc)
//// test multiple value change // test multiple value change
//amts[0] = 200 amts[0] = 200
//amts[1] = 0 amts[1] = 0
//candidates, validators = genCandidates(amts) candidates, validators = genCandidates(amts)
//setCandidates(ctx, candidates) keeper.setCandidate(ctx, candidates[0])
//acc = keeper.getAccUpdateValidators(ctx) keeper.setCandidate(ctx, candidates[1])
//validatorsEqual(t, validators, acc) acc = keeper.getAccUpdateValidators(ctx)
validatorsEqual(t, validators, acc)
//// test validator added at the beginning // test validator added at the beginning
//// test validator added in the middle // test validator added in the middle
//// test validator added at the end // test validator added at the end
//amts = append(amts, 100) amts = append(amts, 100)
//candidates, validators = genCandidates(amts) candidates, validators = genCandidates(amts)
//setCandidates(ctx, candidates) keeper.setCandidate(ctx, candidates[0])
//acc = keeper.getAccUpdateValidators(ctx) keeper.setCandidate(ctx, candidates[1])
//validatorsEqual(t, validators, acc) keeper.setCandidate(ctx, candidates[2])
acc = keeper.getAccUpdateValidators(ctx)
validatorsEqual(t, validators, acc)
//// test multiple validators removed // test multiple validators removed
} }
// clear the tracked changes to the validator set // clear the tracked changes to the validator set
@ -376,14 +377,32 @@ func TestClearAccUpdateValidators(t *testing.T) {
// test if is a validator from the last update // test if is a validator from the last update
func TestIsRecentValidator(t *testing.T) { func TestIsRecentValidator(t *testing.T) {
//TODO ctx, _, keeper := createTestInput(t, nil, false, 0)
// test that an empty validator set doesn't have any validators // test that an empty validator set doesn't have any validators
validators := keeper.GetValidators(ctx)
assert.Equal(t, 0, len(validators))
// get the validators for the first time // get the validators for the first time
keeper.setCandidate(ctx, candidate1)
keeper.setCandidate(ctx, candidate2)
validators = keeper.GetValidators(ctx)
require.Equal(t, 2, len(validators))
assert.Equal(t, candidate1.validator(), validators[0])
assert.Equal(t, candidate2.validator(), validators[1])
// test a basic retrieve of something that should be a recent validator // test a basic retrieve of something that should be a recent validator
assert.True(t, keeper.IsRecentValidator(ctx, candidate1.Address))
assert.True(t, keeper.IsRecentValidator(ctx, candidate2.Address))
// test a basic retrieve of something that should not be a recent validator // test a basic retrieve of something that should not be a recent validator
assert.False(t, keeper.IsRecentValidator(ctx, candidate3.Address))
// remove that validator, but don't retrieve the recent validator group // remove that validator, but don't retrieve the recent validator group
keeper.removeCandidate(ctx, candidate1.Address)
// test that removed validator is not considered a recent validator // test that removed validator is not considered a recent validator
assert.False(t, keeper.IsRecentValidator(ctx, candidate1.Address))
} }
func TestParams(t *testing.T) { func TestParams(t *testing.T) {