From bc57511510ab5d4cf9f2b89d8ea4c19d9c52cbf6 Mon Sep 17 00:00:00 2001 From: heren-ke Date: Fri, 13 Dec 2024 17:21:08 +0800 Subject: [PATCH 1/2] feat(sequencesender/mock_etherman.go): add test case --- sequencesender/mock_etherman_test.go | 107 +++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 sequencesender/mock_etherman_test.go diff --git a/sequencesender/mock_etherman_test.go b/sequencesender/mock_etherman_test.go new file mode 100644 index 0000000000..4048cee942 --- /dev/null +++ b/sequencesender/mock_etherman_test.go @@ -0,0 +1,107 @@ +package sequencesender_test + +import ( + "context" + "testing" + + "github.com/ethereum/go-ethereum/common" + coretype "github.com/ethereum/go-ethereum/core/types" + "github.com/stretchr/testify/assert" + + "github.com/0xPolygonHermez/zkevm-node/etherman/types" + "github.com/0xPolygonHermez/zkevm-node/sequencesender" +) + +func TestBuildSequenceBatchesTxData(t *testing.T) { + // 创建 Mock 实例 + mockEtherman := sequencesender.NewEthermanMock(t) + + // 测试数据 + sender := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + sequences := []types.Sequence{} + maxSequenceTimestamp := uint64(1234567890) + initSequenceBatchNumber := uint64(1) + l2Coinbase := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdef") + + // 设置期望值 + mockEtherman.On("BuildSequenceBatchesTxData", sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase). + Return(&sender, []byte{0x01, 0x02, 0x03}, nil) + + // 调用被测函数 + addr, data, err := mockEtherman.BuildSequenceBatchesTxData(sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase) + + // 验证返回值 + assert.NoError(t, err) + assert.Equal(t, &sender, addr) + assert.Equal(t, []byte{0x01, 0x02, 0x03}, data) + + // 验证 Mock 调用 + mockEtherman.AssertCalled(t, "BuildSequenceBatchesTxData", sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase) +} + +func TestEstimateGasSequenceBatches(t *testing.T) { + // 创建 Mock 实例 + mockEtherman := sequencesender.NewEthermanMock(t) + + // 测试数据 + sender := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + sequences := []types.Sequence{} + maxSequenceTimestamp := uint64(1234567890) + initSequenceBatchNumber := uint64(1) + l2Coinbase := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdef") + tx := &coretype.Transaction{} + + // 设置期望值 + mockEtherman.On("EstimateGasSequenceBatches", sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase). + Return(tx, nil) + + // 调用被测函数 + result, err := mockEtherman.EstimateGasSequenceBatches(sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase) + + // 验证返回值 + assert.NoError(t, err) + assert.Equal(t, tx, result) + + // 验证 Mock 调用 + mockEtherman.AssertCalled(t, "EstimateGasSequenceBatches", sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase) +} + +func TestGetLatestBatchNumber(t *testing.T) { + // 创建 Mock 实例 + mockEtherman := sequencesender.NewEthermanMock(t) + + // 设置期望值 + mockEtherman.On("GetLatestBatchNumber").Return(uint64(42), nil) + + // 调用被测函数 + batchNumber, err := mockEtherman.GetLatestBatchNumber() + + // 验证返回值 + assert.NoError(t, err) + assert.Equal(t, uint64(42), batchNumber) + + // 验证 Mock 调用 + mockEtherman.AssertCalled(t, "GetLatestBatchNumber") +} + +func TestGetLatestBlockHeader(t *testing.T) { + // 创建 Mock 实例 + mockEtherman := sequencesender.NewEthermanMock(t) + + // 测试数据 + ctx := context.Background() + header := &coretype.Header{} + + // 设置期望值 + mockEtherman.On("GetLatestBlockHeader", ctx).Return(header, nil) + + // 调用被测函数 + result, err := mockEtherman.GetLatestBlockHeader(ctx) + + // 验证返回值 + assert.NoError(t, err) + assert.Equal(t, header, result) + + // 验证 Mock 调用 + mockEtherman.AssertCalled(t, "GetLatestBlockHeader", ctx) +} From fad25fadbef3047b28404ecadc4a65db9d93046c Mon Sep 17 00:00:00 2001 From: heren-ke Date: Fri, 13 Dec 2024 17:25:36 +0800 Subject: [PATCH 2/2] update docs --- sequencesender/mock_etherman_test.go | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/sequencesender/mock_etherman_test.go b/sequencesender/mock_etherman_test.go index 4048cee942..9ec864b0f2 100644 --- a/sequencesender/mock_etherman_test.go +++ b/sequencesender/mock_etherman_test.go @@ -13,37 +13,29 @@ import ( ) func TestBuildSequenceBatchesTxData(t *testing.T) { - // 创建 Mock 实例 mockEtherman := sequencesender.NewEthermanMock(t) - // 测试数据 sender := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") sequences := []types.Sequence{} maxSequenceTimestamp := uint64(1234567890) initSequenceBatchNumber := uint64(1) l2Coinbase := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdef") - // 设置期望值 mockEtherman.On("BuildSequenceBatchesTxData", sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase). Return(&sender, []byte{0x01, 0x02, 0x03}, nil) - // 调用被测函数 addr, data, err := mockEtherman.BuildSequenceBatchesTxData(sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase) - // 验证返回值 assert.NoError(t, err) assert.Equal(t, &sender, addr) assert.Equal(t, []byte{0x01, 0x02, 0x03}, data) - // 验证 Mock 调用 mockEtherman.AssertCalled(t, "BuildSequenceBatchesTxData", sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase) } func TestEstimateGasSequenceBatches(t *testing.T) { - // 创建 Mock 实例 mockEtherman := sequencesender.NewEthermanMock(t) - // 测试数据 sender := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") sequences := []types.Sequence{} maxSequenceTimestamp := uint64(1234567890) @@ -51,57 +43,42 @@ func TestEstimateGasSequenceBatches(t *testing.T) { l2Coinbase := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdef") tx := &coretype.Transaction{} - // 设置期望值 mockEtherman.On("EstimateGasSequenceBatches", sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase). Return(tx, nil) - // 调用被测函数 result, err := mockEtherman.EstimateGasSequenceBatches(sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase) - // 验证返回值 assert.NoError(t, err) assert.Equal(t, tx, result) - // 验证 Mock 调用 mockEtherman.AssertCalled(t, "EstimateGasSequenceBatches", sender, sequences, maxSequenceTimestamp, initSequenceBatchNumber, l2Coinbase) } func TestGetLatestBatchNumber(t *testing.T) { - // 创建 Mock 实例 mockEtherman := sequencesender.NewEthermanMock(t) - // 设置期望值 mockEtherman.On("GetLatestBatchNumber").Return(uint64(42), nil) - // 调用被测函数 batchNumber, err := mockEtherman.GetLatestBatchNumber() - // 验证返回值 assert.NoError(t, err) assert.Equal(t, uint64(42), batchNumber) - // 验证 Mock 调用 mockEtherman.AssertCalled(t, "GetLatestBatchNumber") } func TestGetLatestBlockHeader(t *testing.T) { - // 创建 Mock 实例 mockEtherman := sequencesender.NewEthermanMock(t) - // 测试数据 ctx := context.Background() header := &coretype.Header{} - // 设置期望值 mockEtherman.On("GetLatestBlockHeader", ctx).Return(header, nil) - // 调用被测函数 result, err := mockEtherman.GetLatestBlockHeader(ctx) - // 验证返回值 assert.NoError(t, err) assert.Equal(t, header, result) - // 验证 Mock 调用 mockEtherman.AssertCalled(t, "GetLatestBlockHeader", ctx) }