decred.org/dcrwallet/v3@v3.1.0/walletseed/seed_test.go (about) 1 // Copyright (c) 2016 The Decred developers 2 // Use of this source code is governed by an ISC 3 // license that can be found in the LICENSE file. 4 5 package walletseed 6 7 import ( 8 "bytes" 9 "encoding/hex" 10 "strings" 11 "testing" 12 ) 13 14 var mnemonicTests = []struct { 15 mnemonics string 16 data []byte 17 }{ 18 { 19 mnemonics: "topmost Istanbul Pluto vagabond treadmill Pacific brackish dictator goldfish Medusa afflict bravado chatter revolver Dupont midsummer stopwatch whimsical cowbell bottomless fracture", 20 data: []byte{0xE5, 0x82, 0x94, 0xF2, 0xE9, 0xA2, 0x27, 0x48, 21 0x6E, 0x8B, 0x06, 0x1B, 0x31, 0xCC, 0x52, 0x8F, 0xD7, 22 0xFA, 0x3F, 0x19}, 23 }, 24 { 25 mnemonics: "stairway souvenir flytrap recipe adrift upcoming artist positive spearhead Pandora spaniel stupendous tonic concurrent transit Wichita lockup visitor flagpole escapade merit", 26 data: []byte{0xD1, 0xD4, 0x64, 0xC0, 0x04, 0xF0, 0x0F, 0xB5, 27 0xC9, 0xA4, 0xC8, 0xD8, 0xE4, 0x33, 0xE7, 0xFB, 0x7F, 28 0xF5, 0x62, 0x56}, 29 }, 30 { 31 mnemonics: "tissue disbelief stairway component atlas megaton bedlamp certify tumor monument necklace fascinate tunnel fascinate dreadful armistice upshot Apollo exceed aftermath billiard sardonic vapor microscope brackish suspicious woodlark torpedo hamlet sensation assume recipe", 32 data: []byte{0xE3, 0x4C, 0xD1, 0x32, 0x12, 0x8C, 0x19, 0x29, 33 0xEC, 0x96, 0x86, 0x5C, 0xED, 0x5C, 0x4D, 0x0B, 0xF4, 34 0x0A, 0x5D, 0x02, 0x1F, 0xCE, 0xF5, 0x8D, 0x27, 0xDB, 35 0xFE, 0xE3, 0x71, 0xD2, 0x10}, 36 }, 37 { 38 mnemonics: "aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark adroitness aardvark insurgent", 39 data: []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 40 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 41 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 42 0x00, 0x00, 0x00, 0x00, 0x00}, 43 }, 44 } 45 46 func TestEncodeMnemonicSlice(t *testing.T) { 47 for i, test := range mnemonicTests { 48 mnemonics := strings.Join(EncodeMnemonicSlice(test.data), " ") 49 if mnemonics != test.mnemonics { 50 t.Errorf("test %d: got `%v` want `%v`", i, mnemonics, test.mnemonics) 51 } 52 } 53 } 54 55 func TestEncodeMnemonic(t *testing.T) { 56 for i, test := range mnemonicTests { 57 mnemonics := EncodeMnemonic(test.data) 58 if mnemonics != test.mnemonics { 59 t.Errorf("test %d: got `%v` want `%v`", i, mnemonics, test.mnemonics) 60 } 61 } 62 } 63 64 func TestDecodeMnemonic(t *testing.T) { 65 for i, test := range mnemonicTests { 66 data, err := DecodeUserInput(test.mnemonics) 67 if err != nil { 68 t.Errorf("test %d: error: %v", i, err) 69 continue 70 } 71 if !bytes.Equal(data, test.data) { 72 t.Errorf("test %d: got %x want %x", i, data, test.data) 73 } 74 } 75 } 76 77 func TestDecodeHex(t *testing.T) { 78 for i, test := range mnemonicTests { 79 data, err := DecodeUserInput(hex.EncodeToString(test.data)) 80 if err != nil { 81 t.Errorf("test %d: error: %v", i, err) 82 continue 83 } 84 if !bytes.Equal(data, test.data) { 85 t.Errorf("test %d: got %x want %x", i, data, test.data) 86 } 87 } 88 }