github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/rpcclient/oracle/oracle_test.go (about) 1 package oracle 2 3 import ( 4 "errors" 5 "math/big" 6 "testing" 7 8 "github.com/nspcc-dev/neo-go/pkg/core/transaction" 9 "github.com/nspcc-dev/neo-go/pkg/neorpc/result" 10 "github.com/nspcc-dev/neo-go/pkg/util" 11 "github.com/nspcc-dev/neo-go/pkg/vm/stackitem" 12 "github.com/stretchr/testify/require" 13 ) 14 15 type testAct struct { 16 err error 17 res *result.Invoke 18 tx *transaction.Transaction 19 txh util.Uint256 20 vub uint32 21 } 22 23 func (t *testAct) Call(contract util.Uint160, operation string, params ...any) (*result.Invoke, error) { 24 return t.res, t.err 25 } 26 func (t *testAct) MakeCall(contract util.Uint160, method string, params ...any) (*transaction.Transaction, error) { 27 return t.tx, t.err 28 } 29 func (t *testAct) MakeUnsignedCall(contract util.Uint160, method string, attrs []transaction.Attribute, params ...any) (*transaction.Transaction, error) { 30 return t.tx, t.err 31 } 32 func (t *testAct) SendCall(contract util.Uint160, method string, params ...any) (util.Uint256, uint32, error) { 33 return t.txh, t.vub, t.err 34 } 35 36 func TestReader(t *testing.T) { 37 ta := new(testAct) 38 ora := NewReader(ta) 39 40 ta.err = errors.New("") 41 _, err := ora.GetPrice() 42 require.Error(t, err) 43 44 ta.err = nil 45 ta.res = &result.Invoke{ 46 State: "HALT", 47 Stack: []stackitem.Item{ 48 stackitem.Make(42), 49 }, 50 } 51 price, err := ora.GetPrice() 52 require.NoError(t, err) 53 require.Equal(t, big.NewInt(42), price) 54 } 55 56 func TestPriceSetter(t *testing.T) { 57 ta := new(testAct) 58 ora := New(ta) 59 60 big42 := big.NewInt(42) 61 62 ta.err = errors.New("") 63 _, _, err := ora.SetPrice(big42) 64 require.Error(t, err) 65 _, err = ora.SetPriceTransaction(big42) 66 require.Error(t, err) 67 _, err = ora.SetPriceUnsigned(big42) 68 require.Error(t, err) 69 70 ta.err = nil 71 ta.txh = util.Uint256{1, 2, 3} 72 ta.vub = 42 73 ta.tx = transaction.New([]byte{1, 2, 3}, 100500) 74 75 h, vub, err := ora.SetPrice(big42) 76 require.NoError(t, err) 77 require.Equal(t, ta.txh, h) 78 require.Equal(t, ta.vub, vub) 79 80 tx, err := ora.SetPriceTransaction(big42) 81 require.NoError(t, err) 82 require.Equal(t, ta.tx, tx) 83 tx, err = ora.SetPriceUnsigned(big42) 84 require.NoError(t, err) 85 require.Equal(t, ta.tx, tx) 86 }