mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-23 23:30:36 +00:00
3fc2bf5452
Goreport: neo-go/pkg/core/contract_state_test.go Line 21: warning: "Contracto" is a misspelling of "Contraction" (misspell) Line 64: warning: "Contracto" is a misspelling of "Contraction" (misspell) neo-go/pkg/core/interop_neo.go Line 420: warning: "succeedes" is a misspelling of "succeeds" (misspell) neo-go/pkg/network/discovery.go Line 118: warning: "succeded" is a misspelling of "succeeded" (misspell) Line 128: warning: "successfuly" is a misspelling of "successfully" (misspell)
77 lines
2.6 KiB
Go
77 lines
2.6 KiB
Go
package core
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/CityOfZion/neo-go/pkg/core/storage"
|
|
"github.com/CityOfZion/neo-go/pkg/crypto/hash"
|
|
"github.com/CityOfZion/neo-go/pkg/io"
|
|
"github.com/CityOfZion/neo-go/pkg/smartcontract"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestEncodeDecodeContractState(t *testing.T) {
|
|
script := []byte("testscript")
|
|
|
|
contract := &ContractState{
|
|
Script: script,
|
|
ParamList: []smartcontract.ParamType{smartcontract.StringType, smartcontract.IntegerType, smartcontract.Hash160Type},
|
|
ReturnType: smartcontract.BoolType,
|
|
Properties: smartcontract.HasStorage,
|
|
Name: "Contrato",
|
|
CodeVersion: "1.0.0",
|
|
Author: "Joe Random",
|
|
Email: "joe@example.com",
|
|
Description: "Test contract",
|
|
}
|
|
|
|
assert.Equal(t, hash.Hash160(script), contract.ScriptHash())
|
|
buf := io.NewBufBinWriter()
|
|
contract.EncodeBinary(buf.BinWriter)
|
|
assert.Nil(t, buf.Err)
|
|
contractDecoded := &ContractState{}
|
|
r := io.NewBinReaderFromBuf(buf.Bytes())
|
|
contractDecoded.DecodeBinary(r)
|
|
assert.Nil(t, r.Err)
|
|
assert.Equal(t, contract, contractDecoded)
|
|
assert.Equal(t, contract.ScriptHash(), contractDecoded.ScriptHash())
|
|
}
|
|
|
|
func TestContractStateProperties(t *testing.T) {
|
|
flaggedContract := ContractState{
|
|
Properties: smartcontract.HasStorage | smartcontract.HasDynamicInvoke | smartcontract.IsPayable,
|
|
}
|
|
nonFlaggedContract := ContractState{
|
|
ReturnType: smartcontract.BoolType,
|
|
}
|
|
assert.Equal(t, true, flaggedContract.HasStorage())
|
|
assert.Equal(t, true, flaggedContract.HasDynamicInvoke())
|
|
assert.Equal(t, true, flaggedContract.IsPayable())
|
|
assert.Equal(t, false, nonFlaggedContract.HasStorage())
|
|
assert.Equal(t, false, nonFlaggedContract.HasDynamicInvoke())
|
|
assert.Equal(t, false, nonFlaggedContract.IsPayable())
|
|
}
|
|
|
|
func TestPutGetDeleteContractState(t *testing.T) {
|
|
s := storage.NewMemoryStore()
|
|
script := []byte("testscript")
|
|
|
|
contract := &ContractState{
|
|
Script: script,
|
|
ParamList: []smartcontract.ParamType{smartcontract.StringType, smartcontract.IntegerType, smartcontract.Hash160Type},
|
|
ReturnType: smartcontract.BoolType,
|
|
Properties: smartcontract.HasStorage,
|
|
Name: "Contrato",
|
|
CodeVersion: "1.0.0",
|
|
Author: "Joe Random",
|
|
Email: "joe@example.com",
|
|
Description: "Test contract",
|
|
}
|
|
assert.NoError(t, putContractStateIntoStore(s, contract))
|
|
csRead := getContractStateFromStore(s, contract.ScriptHash())
|
|
assert.NotNil(t, csRead)
|
|
assert.Equal(t, contract, csRead)
|
|
assert.NoError(t, deleteContractStateInStore(s, contract.ScriptHash()))
|
|
csRead2 := getContractStateFromStore(s, contract.ScriptHash())
|
|
assert.Nil(t, csRead2)
|
|
}
|