mirror of
https://github.com/FlipsideCrypto/dcrd.git
synced 2026-02-06 19:06:51 +00:00
This commit ports the database2 package from btcsuite pulled in via the previous commit to Decred. It includes updating all necessary package imports, types, logic, copyrights, and documentation as well as replacing the first 256 Bitcoin blocks in the test data with the first 256 Decred blocks.
99 lines
2.7 KiB
Go
99 lines
2.7 KiB
Go
// Copyright (c) 2015-2016 The btcsuite developers
|
|
// Copyright (c) 2016 The Decred developers
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package database2_test
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
database "github.com/decred/dcrd/database2"
|
|
)
|
|
|
|
// TestErrorCodeStringer tests the stringized output for the ErrorCode type.
|
|
func TestErrorCodeStringer(t *testing.T) {
|
|
tests := []struct {
|
|
in database.ErrorCode
|
|
want string
|
|
}{
|
|
{database.ErrDbTypeRegistered, "ErrDbTypeRegistered"},
|
|
{database.ErrDbUnknownType, "ErrDbUnknownType"},
|
|
{database.ErrDbDoesNotExist, "ErrDbDoesNotExist"},
|
|
{database.ErrDbExists, "ErrDbExists"},
|
|
{database.ErrDbNotOpen, "ErrDbNotOpen"},
|
|
{database.ErrDbAlreadyOpen, "ErrDbAlreadyOpen"},
|
|
{database.ErrInvalid, "ErrInvalid"},
|
|
{database.ErrCorruption, "ErrCorruption"},
|
|
{database.ErrTxClosed, "ErrTxClosed"},
|
|
{database.ErrTxNotWritable, "ErrTxNotWritable"},
|
|
{database.ErrBucketNotFound, "ErrBucketNotFound"},
|
|
{database.ErrBucketExists, "ErrBucketExists"},
|
|
{database.ErrBucketNameRequired, "ErrBucketNameRequired"},
|
|
{database.ErrKeyRequired, "ErrKeyRequired"},
|
|
{database.ErrKeyTooLarge, "ErrKeyTooLarge"},
|
|
{database.ErrValueTooLarge, "ErrValueTooLarge"},
|
|
{database.ErrIncompatibleValue, "ErrIncompatibleValue"},
|
|
{database.ErrBlockNotFound, "ErrBlockNotFound"},
|
|
{database.ErrBlockExists, "ErrBlockExists"},
|
|
{database.ErrBlockRegionInvalid, "ErrBlockRegionInvalid"},
|
|
{database.ErrDriverSpecific, "ErrDriverSpecific"},
|
|
|
|
{0xffff, "Unknown ErrorCode (65535)"},
|
|
}
|
|
|
|
// Detect additional error codes that don't have the stringer added.
|
|
if len(tests)-1 != int(database.TstNumErrorCodes) {
|
|
t.Errorf("It appears an error code was added without adding " +
|
|
"an associated stringer test")
|
|
}
|
|
|
|
t.Logf("Running %d tests", len(tests))
|
|
for i, test := range tests {
|
|
result := test.in.String()
|
|
if result != test.want {
|
|
t.Errorf("String #%d\ngot: %s\nwant: %s", i, result,
|
|
test.want)
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestError tests the error output for the Error type.
|
|
func TestError(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
in database.Error
|
|
want string
|
|
}{
|
|
{
|
|
database.Error{Description: "some error"},
|
|
"some error",
|
|
},
|
|
{
|
|
database.Error{Description: "human-readable error"},
|
|
"human-readable error",
|
|
},
|
|
{
|
|
database.Error{
|
|
ErrorCode: database.ErrDriverSpecific,
|
|
Description: "some error",
|
|
Err: errors.New("driver-specific error"),
|
|
},
|
|
"some error: driver-specific error",
|
|
},
|
|
}
|
|
|
|
t.Logf("Running %d tests", len(tests))
|
|
for i, test := range tests {
|
|
result := test.in.Error()
|
|
if result != test.want {
|
|
t.Errorf("Error #%d\n got: %s want: %s", i, result,
|
|
test.want)
|
|
continue
|
|
}
|
|
}
|
|
}
|