github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/crypto/hash/hash_test.go (about)

     1  package hash
     2  
     3  import (
     4  	"encoding/binary"
     5  	"encoding/hex"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestSha256(t *testing.T) {
    13  	input := []byte("hello")
    14  	data := Sha256(input)
    15  
    16  	expected := "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
    17  	actual := hex.EncodeToString(data.BytesBE())
    18  
    19  	assert.Equal(t, expected, actual)
    20  }
    21  
    22  func TestHashDoubleSha256(t *testing.T) {
    23  	input := []byte("hello")
    24  	data := DoubleSha256(input)
    25  
    26  	firstSha := Sha256(input)
    27  	doubleSha := Sha256(firstSha.BytesBE())
    28  	expected := hex.EncodeToString(doubleSha.BytesBE())
    29  
    30  	actual := hex.EncodeToString(data.BytesBE())
    31  	assert.Equal(t, expected, actual)
    32  }
    33  
    34  func TestHashRipeMD160(t *testing.T) {
    35  	input := []byte("hello")
    36  	data := RipeMD160(input)
    37  
    38  	expected := "108f07b8382412612c048d07d13f814118445acd"
    39  	actual := hex.EncodeToString(data.BytesBE())
    40  	assert.Equal(t, expected, actual)
    41  }
    42  
    43  func TestHash160(t *testing.T) {
    44  	input := "02cccafb41b220cab63fd77108d2d1ebcffa32be26da29a04dca4996afce5f75db"
    45  	publicKeyBytes, _ := hex.DecodeString(input)
    46  	data := Hash160(publicKeyBytes)
    47  
    48  	expected := "c8e2b685cc70ec96743b55beb9449782f8f775d8"
    49  	actual := hex.EncodeToString(data.BytesBE())
    50  	assert.Equal(t, expected, actual)
    51  }
    52  
    53  func TestChecksum(t *testing.T) {
    54  	testCases := []struct {
    55  		data []byte
    56  		sum  uint32
    57  	}{
    58  		{nil, 0xe2e0f65d},
    59  		{[]byte{}, 0xe2e0f65d},
    60  		{[]byte{1, 2, 3, 4}, 0xe272e48d},
    61  	}
    62  
    63  	for _, tc := range testCases {
    64  		require.Equal(t, tc.sum, binary.LittleEndian.Uint32(Checksum(tc.data)))
    65  	}
    66  }