51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package webapi
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/decred/dcrd/chaincfg/v3"
|
|
)
|
|
|
|
func TestIsValidVoteChoices(t *testing.T) {
|
|
|
|
// Mainnet vote version 4 contains 2 agendas - sdiffalgorithm and lnsupport.
|
|
// Both agendas have vote choices yes/no/abstain.
|
|
voteVersion := uint32(4)
|
|
params := chaincfg.MainNetParams()
|
|
|
|
var tests = []struct {
|
|
voteChoices map[string]string
|
|
valid bool
|
|
}{
|
|
// Empty vote choices are allowed.
|
|
{map[string]string{}, true},
|
|
|
|
// Valid agenda, valid vote choice.
|
|
{map[string]string{"lnsupport": "yes"}, true},
|
|
{map[string]string{"sdiffalgorithm": "no", "lnsupport": "yes"}, true},
|
|
|
|
// Invalid agenda.
|
|
{map[string]string{"": "yes"}, false},
|
|
{map[string]string{"Fake agenda": "yes"}, false},
|
|
|
|
// Valid agenda, invalid vote choice.
|
|
{map[string]string{"lnsupport": "1234"}, false},
|
|
{map[string]string{"sdiffalgorithm": ""}, false},
|
|
|
|
// One valid choice, one invalid choice.
|
|
{map[string]string{"sdiffalgorithm": "no", "lnsupport": "1234"}, false},
|
|
{map[string]string{"sdiffalgorithm": "1234", "lnsupport": "no"}, false},
|
|
|
|
// One valid agenda, one invalid agenda.
|
|
{map[string]string{"fake": "abstain", "lnsupport": "no"}, false},
|
|
{map[string]string{"sdiffalgorithm": "abstain", "": "no"}, false},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
err := isValidVoteChoices(params, voteVersion, test.voteChoices)
|
|
if (err == nil) != test.valid {
|
|
t.Fatalf("isValidVoteChoices failed for votechoices '%v'.", test.voteChoices)
|
|
}
|
|
}
|
|
}
|