From 04b5b33f188c008eaaf5fc70c2edc98cca12af56 Mon Sep 17 00:00:00 2001 From: gagliardetto Date: Wed, 5 Jan 2022 17:56:17 +0100 Subject: [PATCH] Add more tests --- programs/system/CreateAccountWithSeed_test.go | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/programs/system/CreateAccountWithSeed_test.go b/programs/system/CreateAccountWithSeed_test.go index 0f2364e..b501dfb 100644 --- a/programs/system/CreateAccountWithSeed_test.go +++ b/programs/system/CreateAccountWithSeed_test.go @@ -19,7 +19,9 @@ import ( "strconv" "testing" + bin "github.com/gagliardetto/binary" ag_gofuzz "github.com/gagliardetto/gofuzz" + "github.com/gagliardetto/solana-go" ag_require "github.com/stretchr/testify/require" ) @@ -44,3 +46,51 @@ func TestEncodeDecode_CreateAccountWithSeed(t *testing.T) { }) } } + +func TestEncDec(t *testing.T) { + instr := []byte{204, 95, 77, 127, 148, 25, 135, 127, 89, 146, 22, 90, 233, 80, 113, 3, 70, 176, 165, 222, 81, 200, 100, 223, 117, 165, 155, 44, 53, 225, 124, 20, 5, 0, 0, 0, 0, 0, 0, 0, 104, 101, 108, 108, 111, 192, 4, 14, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 57, 111, 59, 111, 183, 248, 249, 251, 128, 174, 206, 0, 81, 22, 3, 173, 244, 104, 15, 249, 239, 112, 33, 255, 66, 169, 29, 66, 7, 106, 231, 230} + + { + payerPrivateKey := solana.MustPrivateKeyFromBase58("5LRLfrUP22VtiNaPGAEgHPucoJmG8ejmomMVmpn4fkXjexYsT7RQGfGuMePG5PKvecZxMGrqa6EP2RmYcm7TYQvX") + payerAccount, _ := solana.WalletFromPrivateKeyBase58(payerPrivateKey.String()) + programID := "4sCcZNQR8vfWckyi5L9KdptdaiLxdiMjVgKQay7HxzmK" + programPubKey := solana.MustPublicKeyFromBase58(programID) + + newSubAccount, err := solana.CreateWithSeed( + payerAccount.PublicKey(), + "hello", + programPubKey, + ) + ag_require.NoError(t, err) + + instruction := NewCreateAccountWithSeedInstruction( + payerAccount.PublicKey(), + "hello", + 918720, + 4, + programPubKey, + payerAccount.PublicKey(), + newSubAccount, + payerAccount.PublicKey(), + ) + + { + buffer := new(bytes.Buffer) + err = bin.NewBinEncoder(buffer).Encode(instruction) + ag_require.NoError(t, err) + ag_require.Equal(t, instr, buffer.Bytes()) + } + + { + got := new(CreateAccountWithSeed) + err = decodeT(got, instr) + got.AccountMetaSlice = solana.AccountMetaSlice{ + solana.Meta(payerAccount.PublicKey()).WRITE().SIGNER(), + solana.Meta(newSubAccount).WRITE(), + solana.Meta(payerAccount.PublicKey()).SIGNER(), + } + ag_require.NoError(t, err) + ag_require.Equal(t, instruction, got) + } + } +}