updated tests

This commit is contained in:
Collin Montag 2020-05-28 23:50:33 -04:00
parent 198accdea7
commit 232f962d4b
5 changed files with 53 additions and 22 deletions

View File

@ -77,7 +77,7 @@ func (s *prefixedState) SetDBInitialized(status choices.Status) error {
// Funds returns the mapping from the 32 byte representation of an address to a
// list of utxo IDs that reference the address.
func (s *prefixedState) Funds(id ids.ID) ([]ids.ID, error) {
return s.state.IDs(uniqueID(id, fundsID, s.funds))
return s.state.IDs(id)
}
// SpendUTXO consumes the provided utxo.

View File

@ -182,8 +182,11 @@ func TestPrefixedFundingAddresses(t *testing.T) {
if err := state.SpendUTXO(utxo.InputID()); err != nil {
t.Fatal(err)
}
_, err = state.Funds(ids.NewID(hashing.ComputeHash256Array([]byte{0})))
if err == nil {
t.Fatalf("Should have returned no utxoIDs")
funds, err = state.Funds(ids.NewID(hashing.ComputeHash256Array([]byte{0})))
if err != nil {
t.Fatal(err)
}
if len(funds) != 0 {
t.Fatalf("Should have returned 0 utxoIDs")
}
}

View File

@ -23,9 +23,9 @@ func TestStateIDs(t *testing.T) {
state := vm.state.state
id0 := ids.NewID([32]byte{0xff, 0})
id1 := ids.NewID([32]byte{0xff, 0})
id2 := ids.NewID([32]byte{0xff, 0})
id0 := ids.NewID([32]byte{0x00, 0})
id1 := ids.NewID([32]byte{0x01, 0})
id2 := ids.NewID([32]byte{0x02, 0})
if _, err := state.IDs(ids.Empty); err != nil {
t.Fatal(err)
@ -47,6 +47,7 @@ func TestStateIDs(t *testing.T) {
t.Fatalf("Returned the wrong number of ids")
}
ids.SortIDs(result)
for i, resultID := range result {
expectedID := expected[i]
if !expectedID.Equals(resultID) {
@ -54,6 +55,21 @@ func TestStateIDs(t *testing.T) {
}
}
for _, id := range expected {
if err := state.RemoveID(ids.Empty, id); err != nil {
t.Fatal(err)
}
}
result, err = state.IDs(ids.Empty)
if err != nil {
t.Fatal(err)
}
if len(result) != 0 {
t.Fatalf("Should have returned 0 IDs")
}
expected = []ids.ID{id1, id2}
for _, id := range expected {
if err := state.AddID(ids.Empty, id); err != nil {
@ -70,6 +86,7 @@ func TestStateIDs(t *testing.T) {
t.Fatalf("Returned the wrong number of ids")
}
ids.SortIDs(result)
for i, resultID := range result {
expectedID := expected[i]
if !expectedID.Equals(resultID) {
@ -88,6 +105,7 @@ func TestStateIDs(t *testing.T) {
t.Fatalf("Returned the wrong number of ids")
}
ids.SortIDs(result)
for i, resultID := range result {
expectedID := expected[i]
if !expectedID.Equals(resultID) {
@ -99,18 +117,6 @@ func TestStateIDs(t *testing.T) {
t.Fatal(err)
}
result, err = state.IDs(ids.Empty)
if err == nil {
t.Fatalf("Should have errored during cache lookup")
}
state.Cache.Flush()
result, err = state.IDs(ids.Empty)
if err == nil {
t.Fatalf("Should have errored during parsing")
}
statusResult, err := state.Status(ids.Empty)
if err != nil {
t.Fatal(err)
@ -119,12 +125,27 @@ func TestStateIDs(t *testing.T) {
t.Fatalf("Should have returned the %s status", choices.Accepted)
}
for _, id := range expected {
if err := state.RemoveID(ids.Empty, id); err != nil {
t.Fatal(err)
}
}
result, err = state.IDs(ids.Empty)
if err != nil {
t.Fatal(err)
}
if len(result) != 0 {
t.Fatalf("Should have returned 0 IDs")
}
if err := state.AddID(ids.Empty, ids.ID{}); err == nil {
t.Fatalf("Should have errored during serialization")
}
if _, err := state.IDs(ids.Empty); err == nil {
t.Fatalf("Should have errored when reading ids")
if err := state.RemoveID(ids.Empty, ids.ID{}); err == nil {
t.Fatalf("Should have errored during serialization")
}
}

View File

@ -47,7 +47,7 @@ func (s *chainState) UTXO(id ids.ID) (*UTXO, error) {
// Funds returns the mapping from the 32 byte representation of an
// address to a list of utxo IDs that reference the address.
func (s *chainState) Funds(id ids.ID) ([]ids.ID, error) {
return s.IDs(UniqueID(id, s.fundsIDPrefix, s.fundsID))
return s.IDs(id)
}
// SpendUTXO consumes the provided platform utxo.

View File

@ -16,6 +16,7 @@ import (
var (
errCacheTypeMismatch = errors.New("type returned from cache doesn't match the expected type")
errZeroID = errors.New("database key ID value not initialized")
)
// UniqueID returns a unique identifier
@ -134,12 +135,18 @@ func (s *State) IDs(id ids.ID) ([]ids.ID, error) {
// AddID saves an ID to the prefixed database
func (s *State) AddID(id ids.ID, key ids.ID) error {
if key.IsZero() {
return errZeroID
}
db := prefixdb.New(id.Bytes(), s.DB)
return db.Put(key.Bytes(), nil)
}
// RemoveID removes an ID from the prefixed database
func (s *State) RemoveID(id ids.ID, key ids.ID) error {
if key.IsZero() {
return errZeroID
}
db := prefixdb.New(id.Bytes(), s.DB)
return db.Delete(key.Bytes())
}