github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/calls/evmgaspricer/static_test.go (about) 1 package evmgaspricer 2 3 import ( 4 "errors" 5 "math/big" 6 "testing" 7 8 mock_evmgaspricer "github.com/ChainSafe/chainbridge-core/chains/evm/calls/evmgaspricer/mock" 9 10 "github.com/golang/mock/gomock" 11 12 "github.com/stretchr/testify/suite" 13 ) 14 15 type StaticGasPriceTestSuite struct { 16 suite.Suite 17 gasPricerMock *mock_evmgaspricer.MockGasPriceClient 18 } 19 20 func TestRunTestSuite(t *testing.T) { 21 suite.Run(t, new(StaticGasPriceTestSuite)) 22 } 23 24 func (s *StaticGasPriceTestSuite) SetupSuite() {} 25 func (s *StaticGasPriceTestSuite) TearDownSuite() {} 26 func (s *StaticGasPriceTestSuite) SetupTest() { 27 gomockController := gomock.NewController(s.T()) 28 s.gasPricerMock = mock_evmgaspricer.NewMockGasPriceClient(gomockController) 29 } 30 func (s *StaticGasPriceTestSuite) TearDownTest() {} 31 32 func (s *StaticGasPriceTestSuite) TestStaticGasPricerNoOpts() { 33 twentyGwei := big.NewInt(20000000000) 34 gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, nil) 35 s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, nil) 36 res, err := gpd.GasPrice(nil) 37 s.Nil(err) 38 s.Equal(len(res), 1) 39 s.Equal(res[0].Cmp(twentyGwei), 0) 40 } 41 42 func (s *StaticGasPriceTestSuite) TestStaticGasPricerFactorSet() { 43 twentyGwei := big.NewInt(20000000000) 44 gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, &GasPricerOpts{ 45 GasPriceFactor: big.NewFloat(2.5), 46 }) 47 s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, nil) 48 res, err := gpd.GasPrice(nil) 49 s.Nil(err) 50 s.Equal(len(res), 1) 51 s.Equal(res[0].Cmp(big.NewInt(50000000000)), 0) 52 } 53 54 func (s *StaticGasPriceTestSuite) TestStaticGasPricerUpperLimitSet() { 55 twentyGwei := big.NewInt(20000000000) 56 gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, &GasPricerOpts{ 57 UpperLimitFeePerGas: big.NewInt(1), 58 }) 59 s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, nil) 60 res, err := gpd.GasPrice(nil) 61 s.Nil(err) 62 s.Equal(len(res), 1) 63 s.Equal(res[0].Cmp(big.NewInt(1)), 0) 64 } 65 66 func (s *StaticGasPriceTestSuite) TestStaticGasPricerUpperLimitAndFactorSet() { 67 twentyGwei := big.NewInt(20000000000) 68 gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, &GasPricerOpts{ 69 UpperLimitFeePerGas: big.NewInt(1), 70 GasPriceFactor: big.NewFloat(2.5), 71 }) 72 s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, nil) 73 res, err := gpd.GasPrice(nil) 74 s.Nil(err) 75 s.Equal(len(res), 1) 76 s.Equal(res[0].Cmp(big.NewInt(1)), 0) 77 } 78 79 func (s *StaticGasPriceTestSuite) TestStaticGasPricerErrOnSuggest() { 80 twentyGwei := big.NewInt(20000000000) 81 gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, nil) 82 e := errors.New("err on suggest") 83 s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, e) 84 res, err := gpd.GasPrice(nil) 85 s.NotNil(err) 86 s.Nil(res) 87 }