github.com/klaytn/klaytn@v1.12.1/api/api_public_blockchain_test.go (about) 1 // Copyright 2023 The klaytn Authors 2 // This file is part of the klaytn library. 3 // 4 // The klaytn library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The klaytn library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the klaytn library. If not, see <http://www.gnu.org/licenses/>. 16 17 package api 18 19 import ( 20 "context" 21 "testing" 22 23 "github.com/golang/mock/gomock" 24 mock_api "github.com/klaytn/klaytn/api/mocks" 25 "github.com/klaytn/klaytn/blockchain" 26 "github.com/klaytn/klaytn/common/hexutil" 27 "github.com/klaytn/klaytn/params" 28 ) 29 30 func testInitForKlayApi(t *testing.T) (*gomock.Controller, *mock_api.MockBackend, *PublicBlockChainAPI) { 31 mockCtrl := gomock.NewController(t) 32 mockBackend := mock_api.NewMockBackend(mockCtrl) 33 34 blockchain.InitDeriveSha(params.TestChainConfig) 35 36 api := NewPublicBlockChainAPI(mockBackend) 37 return mockCtrl, mockBackend, api 38 } 39 40 func TestKlaytnAPI_EstimateGas(t *testing.T) { 41 mockCtrl, mockBackend, api := testInitForKlayApi(t) 42 defer mockCtrl.Finish() 43 44 testEstimateGas(t, mockBackend, func(ethArgs EthTransactionArgs) (hexutil.Uint64, error) { 45 // Testcases are written in EthTransactionArgs. Convert to klay CallArgs 46 args := CallArgs{ 47 From: ethArgs.from(), 48 To: ethArgs.To, 49 GasPrice: ethArgs.GasPrice, 50 MaxFeePerGas: ethArgs.MaxFeePerGas, 51 MaxPriorityFeePerGas: ethArgs.MaxPriorityFeePerGas, 52 Data: ethArgs.data(), 53 } 54 if ethArgs.Gas != nil { 55 args.Gas = *ethArgs.Gas 56 } 57 if ethArgs.Value != nil { 58 args.Value = *ethArgs.Value 59 } 60 return api.EstimateGas(context.Background(), args) 61 }) 62 }