mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-29 20:51:45 +00:00
Add typo detector test, fix panics
This commit is contained in:
@ -130,6 +130,52 @@ func TestCheckInvalidLists(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func getRandWord(c WordCodec) string {
|
||||
idx := cmn.RandInt() % BankSize
|
||||
return c.words[idx]
|
||||
}
|
||||
|
||||
func getDiffWord(c WordCodec, not string) string {
|
||||
w := getRandWord(c)
|
||||
if w == not {
|
||||
w = getRandWord(c)
|
||||
}
|
||||
return w
|
||||
}
|
||||
|
||||
func TestCheckTypoDetection(t *testing.T) {
|
||||
assert, require := assert.New(t), require.New(t)
|
||||
|
||||
banks := []string{"english"}
|
||||
|
||||
for _, bank := range banks {
|
||||
codec, err := LoadCodec(bank)
|
||||
require.Nil(err, "%s: %+v", bank, err)
|
||||
for i := 0; i < 10; i++ {
|
||||
numBytes := cmn.RandInt()%60 + 1
|
||||
data := cmn.RandBytes(numBytes)
|
||||
|
||||
words, err := codec.BytesToWords(data)
|
||||
assert.Nil(err, "%s: %+v", bank, err)
|
||||
good, err := codec.WordsToBytes(words)
|
||||
assert.Nil(err, "%s: %+v", bank, err)
|
||||
assert.Equal(data, good, bank)
|
||||
|
||||
// now try some tweaks...
|
||||
cut := words[1:]
|
||||
_, err = codec.WordsToBytes(cut)
|
||||
assert.NotNil(err, "%s: %s", bank, words)
|
||||
|
||||
// swap a word within the bank, should fails
|
||||
words[3] = getDiffWord(codec, words[3])
|
||||
_, err = codec.WordsToBytes(words)
|
||||
assert.NotNil(err, "%s: %s", bank, words)
|
||||
|
||||
// put a random word here, must fail
|
||||
words[3] = cmn.RandStr(10)
|
||||
_, err = codec.WordsToBytes(words)
|
||||
assert.NotNil(err, "%s: %s", bank, words)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user