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  }