github.com/filecoin-project/specs-actors/v4@v4.0.2/actors/test/market_withdrawal_test.go (about) 1 package test_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/filecoin-project/go-state-types/big" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 "github.com/filecoin-project/specs-actors/v4/actors/builtin" 12 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" 13 "github.com/filecoin-project/specs-actors/v4/support/ipld" 14 vm "github.com/filecoin-project/specs-actors/v4/support/vm" 15 ) 16 17 func TestMarketWithdraw(t *testing.T) { 18 ctx := context.Background() 19 v := vm.NewVMWithSingletons(ctx, t, ipld.NewBlockStoreInMemory()) 20 initialBalance := big.Mul(big.NewInt(6), big.NewInt(1e18)) 21 addrs := vm.CreateAccounts(ctx, t, v, 1, initialBalance, 93837778) 22 caller := addrs[0] 23 24 // add market collateral for clients and miner 25 collateral := big.Mul(big.NewInt(3), vm.FIL) 26 vm.ApplyOk(t, v, caller, builtin.StorageMarketActorAddr, collateral, builtin.MethodsMarket.AddBalance, &caller) 27 28 a, found, err := v.GetActor(caller) 29 require.NoError(t, err) 30 require.True(t, found) 31 assert.Equal(t, big.Sub(initialBalance, collateral), a.Balance) 32 33 // withdraw collateral from market 34 params := &market.WithdrawBalanceParams{ 35 ProviderOrClientAddress: caller, 36 Amount: collateral, 37 } 38 vm.ApplyOk(t, v, caller, builtin.StorageMarketActorAddr, big.Zero(), builtin.MethodsMarket.WithdrawBalance, params) 39 40 a, found, err = v.GetActor(caller) 41 require.NoError(t, err) 42 require.True(t, found) 43 assert.Equal(t, initialBalance, a.Balance) 44 }