lbcd/chaincfg/params_test.go

87 lines
2.4 KiB
Go
Raw Normal View History

// Copyright (c) 2016 The btcsuite developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.
package chaincfg
import (
"bytes"
"testing"
)
// TestInvalidHashStr ensures the newShaHashFromStr function panics when used to
// with an invalid hash string.
func TestInvalidHashStr(t *testing.T) {
defer func() {
if r := recover(); r == nil {
t.Errorf("Expected panic for invalid hash, got nil")
}
}()
newHashFromStr("banana")
}
// TestMustRegisterPanic ensures the mustRegister function panics when used to
// register an invalid network.
func TestMustRegisterPanic(t *testing.T) {
t.Parallel()
// Setup a defer to catch the expected panic to ensure it actually
// paniced.
defer func() {
if err := recover(); err == nil {
t.Error("mustRegister did not panic as expected")
}
}()
// Intentionally try to register duplicate params to force a panic.
mustRegister(&MainNetParams)
}
func TestRegisterHDKeyID(t *testing.T) {
t.Parallel()
// Ref: https://github.com/satoshilabs/slips/blob/master/slip-0132.md
hdKeyIDZprv := []byte{0x02, 0xaa, 0x7a, 0x99}
hdKeyIDZpub := []byte{0x02, 0xaa, 0x7e, 0xd3}
if err := RegisterHDKeyID(hdKeyIDZpub, hdKeyIDZprv); err != nil {
t.Fatalf("RegisterHDKeyID: expected no error, got %v", err)
}
got, err := HDPrivateKeyToPublicKeyID(hdKeyIDZprv)
if err != nil {
t.Fatalf("HDPrivateKeyToPublicKeyID: expected no error, got %v", err)
}
if !bytes.Equal(got, hdKeyIDZpub) {
t.Fatalf("HDPrivateKeyToPublicKeyID: expected result %v, got %v",
hdKeyIDZpub, got)
}
}
func TestInvalidHDKeyID(t *testing.T) {
t.Parallel()
prvValid := []byte{0x02, 0xaa, 0x7a, 0x99}
pubValid := []byte{0x02, 0xaa, 0x7e, 0xd3}
prvInvalid := []byte{0x00}
pubInvalid := []byte{0x00}
if err := RegisterHDKeyID(pubInvalid, prvValid); err != ErrInvalidHDKeyID {
t.Fatalf("RegisterHDKeyID: want err ErrInvalidHDKeyID, got %v", err)
}
if err := RegisterHDKeyID(pubValid, prvInvalid); err != ErrInvalidHDKeyID {
t.Fatalf("RegisterHDKeyID: want err ErrInvalidHDKeyID, got %v", err)
}
if err := RegisterHDKeyID(pubInvalid, prvInvalid); err != ErrInvalidHDKeyID {
t.Fatalf("RegisterHDKeyID: want err ErrInvalidHDKeyID, got %v", err)
}
// FIXME: The error type should be changed to ErrInvalidHDKeyID.
if _, err := HDPrivateKeyToPublicKeyID(prvInvalid); err != ErrUnknownHDKeyID {
t.Fatalf("HDPrivateKeyToPublicKeyID: want err ErrUnknownHDKeyID, got %v", err)
}
}