From 35824728eb1a9c070af37b4561a0295ff3894695 Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 11 Oct 2019 12:15:16 +0300 Subject: [PATCH] core: add putAssetStateIntoStore() Will be used by interops. --- pkg/core/asset_state.go | 11 +++++++++++ pkg/core/asset_state_test.go | 23 +++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/pkg/core/asset_state.go b/pkg/core/asset_state.go index 3a553d7ef..8dd8663e6 100644 --- a/pkg/core/asset_state.go +++ b/pkg/core/asset_state.go @@ -27,6 +27,17 @@ func (a Assets) commit(b storage.Batch) error { return nil } +// putAssetStateIntoStore puts given asset state into the given store. +func putAssetStateIntoStore(s storage.Store, as *AssetState) error { + buf := io.NewBufBinWriter() + as.EncodeBinary(buf.BinWriter) + if buf.Err != nil { + return buf.Err + } + key := storage.AppendPrefix(storage.STAsset, as.ID.Bytes()) + return s.Put(key, buf.Bytes()) +} + // AssetState represents the state of an NEO registered Asset. type AssetState struct { ID util.Uint256 diff --git a/pkg/core/asset_state_test.go b/pkg/core/asset_state_test.go index 203897c47..8fbfb3791 100644 --- a/pkg/core/asset_state_test.go +++ b/pkg/core/asset_state_test.go @@ -3,6 +3,7 @@ package core import ( "testing" + "github.com/CityOfZion/neo-go/pkg/core/storage" "github.com/CityOfZion/neo-go/pkg/core/transaction" "github.com/CityOfZion/neo-go/pkg/crypto/keys" "github.com/CityOfZion/neo-go/pkg/io" @@ -35,3 +36,25 @@ func TestEncodeDecodeAssetState(t *testing.T) { assert.Nil(t, r.Err) assert.Equal(t, asset, assetDecode) } + +func TestPutGetAssetState(t *testing.T) { + s := storage.NewMemoryStore() + asset := &AssetState{ + ID: randomUint256(), + AssetType: transaction.Token, + Name: "super cool token", + Amount: util.Fixed8(1000000), + Available: util.Fixed8(100), + Precision: 8, + FeeMode: feeMode, + Owner: &keys.PublicKey{}, + Admin: randomUint160(), + Issuer: randomUint160(), + Expiration: 10, + IsFrozen: false, + } + assert.NoError(t, putAssetStateIntoStore(s, asset)) + asRead := getAssetStateFromStore(s, asset.ID) + assert.NotNil(t, asRead) + assert.Equal(t, asset, asRead) +}