github.com/mavryk-network/mvgo@v1.19.9/base58/base58check_test.go (about) 1 // Copyright (c) 2020-2021 Blockwatch Data Inc. 2 // Copyright (c) 2013-2014 The btcsuite developers 3 // Use of this source code is governed by an ISC 4 // license that can be found in the LICENSE file. 5 6 package base58_test 7 8 import ( 9 "testing" 10 11 "github.com/mavryk-network/mvgo/base58" 12 ) 13 14 var checkEncodingStringTests = []struct { 15 version byte 16 in string 17 out string 18 }{ 19 {20, "", "3MNQE1X"}, 20 {20, " ", "B2Kr6dBE"}, 21 {20, "-", "B3jv1Aft"}, 22 {20, "0", "B482yuaX"}, 23 {20, "1", "B4CmeGAC"}, 24 {20, "-1", "mM7eUf6kB"}, 25 {20, "11", "mP7BMTDVH"}, 26 {20, "abc", "4QiVtDjUdeq"}, 27 {20, "1234598760", "ZmNb8uQn5zvnUohNCEPP"}, 28 {20, "abcdefghijklmnopqrstuvwxyz", "K2RYDcKfupxwXdWhSAxQPCeiULntKm63UXyx5MvEH2"}, 29 {20, "00000000000000000000000000000000000000000000000000000000000000", "bi1EWXwJay2udZVxLJozuTb8Meg4W9c6xnmJaRDjg6pri5MBAxb9XwrpQXbtnqEoRV5U2pixnFfwyXC8tRAVC8XxnjK"}, 30 } 31 32 func TestBase58Check(t *testing.T) { 33 for x, test := range checkEncodingStringTests { 34 // test encoding 35 if res := base58.CheckEncode([]byte(test.in), []byte{test.version}); res != test.out { 36 t.Errorf("CheckEncode test #%d failed: got %s, want: %s", x, res, test.out) 37 } 38 39 // test decoding 40 res, version, err := base58.CheckDecode(test.out, 1, nil) 41 switch { 42 case err != nil: 43 t.Errorf("CheckDecode test #%d failed with err: %v", x, err) 44 case version[0] != test.version: 45 t.Errorf("CheckDecode test #%d failed: got version: %d want: %d", x, version, test.version) 46 case string(res) != test.in: 47 t.Errorf("CheckDecode test #%d failed: got: %s want: %s", x, res, test.in) 48 } 49 } 50 51 // test the two decoding failure cases 52 // case 1: checksum error 53 _, _, err := base58.CheckDecode("3MNQE1Y", 1, nil) 54 if err != base58.ErrChecksum { 55 t.Error("Checkdecode test failed, expected ErrChecksum") 56 } 57 // case 2: invalid formats (string lengths below 5 mean the version byte and/or the checksum 58 // bytes are missing). 59 testString := "" 60 for len := 0; len < 4; len++ { 61 testString += "x" 62 _, _, err = base58.CheckDecode(testString, 1, nil) 63 if err != base58.ErrInvalidFormat { 64 t.Error("Checkdecode test failed, expected ErrInvalidFormat") 65 } 66 } 67 68 }