From d0cb8ad65ff01c7df2f351e03dff84a2a64bc93f Mon Sep 17 00:00:00 2001 From: francois Date: Wed, 24 Apr 2024 21:14:25 +0200 Subject: [PATCH] fix token test --- x/programs/examples/token.go | 50 ++++++++++++++++++++++++++++ x/programs/examples/token_test.go | 6 ++++ x/programs/tests/fixture/token.wasm | Bin 45523 -> 41683 bytes 3 files changed, 56 insertions(+) diff --git a/x/programs/examples/token.go b/x/programs/examples/token.go index 8f3bb1a4b4..7bc67c3bb7 100644 --- a/x/programs/examples/token.go +++ b/x/programs/examples/token.go @@ -175,6 +175,11 @@ func (t *Token) Run(ctx context.Context) error { zap.Int64("alice", mintAlice), ) + alicePtr, err = writeToMem(alicePublicKey, mem) + if err != nil { + return err + } + // check balance of alice result, err = rt.Call(ctx, "get_balance", programContext, alicePtr) if err != nil { @@ -184,6 +189,11 @@ func (t *Token) Run(ctx context.Context) error { zap.Int64("alice", result[0]), ) + bobPtr, err = writeToMem(bobPublicKey, mem) + if err != nil { + return err + } + // check balance of bob result, err = rt.Call(ctx, "get_balance", programContext, bobPtr) if err != nil { @@ -199,6 +209,16 @@ func (t *Token) Run(ctx context.Context) error { if err != nil { return err } + bobPtr, err = writeToMem(bobPublicKey, mem) + if err != nil { + return err + } + + alicePtr, err = writeToMem(alicePublicKey, mem) + if err != nil { + return err + } + _, err = rt.Call(ctx, "transfer", programContext, alicePtr, bobPtr, transferToBobPtr) if err != nil { return err @@ -213,6 +233,16 @@ func (t *Token) Run(ctx context.Context) error { return err } + bobPtr, err = writeToMem(bobPublicKey, mem) + if err != nil { + return err + } + + alicePtr, err = writeToMem(alicePublicKey, mem) + if err != nil { + return err + } + _, err = rt.Call(ctx, "transfer", programContext, alicePtr, bobPtr, onePtr) if err != nil { return err @@ -222,6 +252,11 @@ func (t *Token) Run(ctx context.Context) error { zap.Int64("to bob", 1), ) + alicePtr, err = writeToMem(alicePublicKey, mem) + if err != nil { + return err + } + // get balance alice result, err = rt.Call(ctx, "get_balance", programContext, alicePtr) if err != nil { @@ -231,6 +266,11 @@ func (t *Token) Run(ctx context.Context) error { zap.Int64("alice", result[0]), ) + bobPtr, err = writeToMem(bobPublicKey, mem) + if err != nil { + return err + } + // get balance bob result, err = rt.Call(ctx, "get_balance", programContext, bobPtr) if err != nil { @@ -274,6 +314,11 @@ func (t *Token) Run(ctx context.Context) error { zap.Int32("to bob", minters[1].Amount), ) + alicePtr, err = writeToMem(alicePublicKey, mem) + if err != nil { + return err + } + // get balance alice result, err = rt.Call(ctx, "get_balance", programContext, alicePtr) if err != nil { @@ -283,6 +328,11 @@ func (t *Token) Run(ctx context.Context) error { zap.Int64("alice", result[0]), ) + bobPtr, err = writeToMem(bobPublicKey, mem) + if err != nil { + return err + } + // get balance bob result, err = rt.Call(ctx, "get_balance", programContext, bobPtr) if err != nil { diff --git a/x/programs/examples/token_test.go b/x/programs/examples/token_test.go index f4977e842e..58a37358c5 100644 --- a/x/programs/examples/token_test.go +++ b/x/programs/examples/token_test.go @@ -65,6 +65,9 @@ func TestTokenProgram(t *testing.T) { _, err = rt.Call(ctx, "mint_to", callContext, alicePtr, mintAlicePtr) require.NoError(err) + alicePtr, err = writeToMem(alicePublicKey, mem) + require.NoError(err) + // check balance of alice result, err := rt.Call(ctx, "get_balance", callContext, alicePtr) require.NoError(err) @@ -75,6 +78,9 @@ func TestTokenProgram(t *testing.T) { require.NoError(err) require.Equal(int64(1000), aliceBalance) + alicePtr, err = writeToMem(alicePublicKey, mem) + require.NoError(err) + // burn alice tokens _, err = rt.Call(ctx, "burn_from", callContext, alicePtr) require.NoError(err) diff --git a/x/programs/tests/fixture/token.wasm b/x/programs/tests/fixture/token.wasm index 35a7de06736004b1138602e1339d1b80256bde6c..9d30138ce01886ae4de262aaaacbb85ba7ab7b95 100755 GIT binary patch delta 18456 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 literal 45523 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