mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 18:32:23 +00:00
name tests
This commit is contained in:
parent
98882fc279
commit
b865824787
1 changed files with 47 additions and 37 deletions
|
|
@ -662,6 +662,7 @@ func TestMulticallV1(t *testing.T) {
|
||||||
Calls []callRes
|
Calls []callRes
|
||||||
}
|
}
|
||||||
var testSuite = []struct {
|
var testSuite = []struct {
|
||||||
|
name string
|
||||||
blocks []CallBatch
|
blocks []CallBatch
|
||||||
tag rpc.BlockNumberOrHash
|
tag rpc.BlockNumberOrHash
|
||||||
includeTransfers *bool
|
includeTransfers *bool
|
||||||
|
|
@ -672,7 +673,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
// First value transfer OK after state override.
|
// First value transfer OK after state override.
|
||||||
// Second one should succeed because of first transfer.
|
// Second one should succeed because of first transfer.
|
||||||
{
|
{
|
||||||
tag: latest,
|
name: "simple",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
StateOverrides: &StateOverride{
|
StateOverrides: &StateOverride{
|
||||||
randomAccounts[0].addr: OverrideAccount{Balance: newRPCBalance(big.NewInt(1000))},
|
randomAccounts[0].addr: OverrideAccount{Balance: newRPCBalance(big.NewInt(1000))},
|
||||||
|
|
@ -707,7 +709,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
}},
|
}},
|
||||||
}, {
|
}, {
|
||||||
// State build-up over blocks.
|
// State build-up over blocks.
|
||||||
tag: latest,
|
name: "simple-multi-block",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
StateOverrides: &StateOverride{
|
StateOverrides: &StateOverride{
|
||||||
randomAccounts[0].addr: OverrideAccount{Balance: newRPCBalance(big.NewInt(2000))},
|
randomAccounts[0].addr: OverrideAccount{Balance: newRPCBalance(big.NewInt(2000))},
|
||||||
|
|
@ -777,7 +780,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
}},
|
}},
|
||||||
}, {
|
}, {
|
||||||
// Block overrides should work, each call is simulated on a different block number
|
// Block overrides should work, each call is simulated on a different block number
|
||||||
tag: latest,
|
name: "block-overrides",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
BlockOverrides: &BlockOverrides{
|
BlockOverrides: &BlockOverrides{
|
||||||
Number: (*hexutil.Big)(big.NewInt(11)),
|
Number: (*hexutil.Big)(big.NewInt(11)),
|
||||||
|
|
@ -833,7 +837,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
},
|
},
|
||||||
// Block numbers must be in order.
|
// Block numbers must be in order.
|
||||||
{
|
{
|
||||||
tag: latest,
|
name: "block-number-order",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
BlockOverrides: &BlockOverrides{
|
BlockOverrides: &BlockOverrides{
|
||||||
Number: (*hexutil.Big)(big.NewInt(12)),
|
Number: (*hexutil.Big)(big.NewInt(12)),
|
||||||
|
|
@ -864,7 +869,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
},
|
},
|
||||||
// Test on solidity storage example. Set value in one call, read in next.
|
// Test on solidity storage example. Set value in one call, read in next.
|
||||||
{
|
{
|
||||||
tag: latest,
|
name: "storage-contract",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
StateOverrides: &StateOverride{
|
StateOverrides: &StateOverride{
|
||||||
randomAccounts[2].addr: OverrideAccount{
|
randomAccounts[2].addr: OverrideAccount{
|
||||||
|
|
@ -905,7 +911,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
},
|
},
|
||||||
// Test logs output.
|
// Test logs output.
|
||||||
{
|
{
|
||||||
tag: latest,
|
name: "logs",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
StateOverrides: &StateOverride{
|
StateOverrides: &StateOverride{
|
||||||
randomAccounts[2].addr: OverrideAccount{
|
randomAccounts[2].addr: OverrideAccount{
|
||||||
|
|
@ -946,7 +953,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
},
|
},
|
||||||
// Test ecrecover override
|
// Test ecrecover override
|
||||||
{
|
{
|
||||||
tag: latest,
|
name: "ecrecover-override",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
StateOverrides: &StateOverride{
|
StateOverrides: &StateOverride{
|
||||||
randomAccounts[2].addr: OverrideAccount{
|
randomAccounts[2].addr: OverrideAccount{
|
||||||
|
|
@ -1009,7 +1017,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
},
|
},
|
||||||
// Test ether transfers.
|
// Test ether transfers.
|
||||||
{
|
{
|
||||||
tag: latest,
|
name: "transfer-logs",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
StateOverrides: &StateOverride{
|
StateOverrides: &StateOverride{
|
||||||
randomAccounts[0].addr: OverrideAccount{
|
randomAccounts[0].addr: OverrideAccount{
|
||||||
|
|
@ -1063,7 +1072,8 @@ func TestMulticallV1(t *testing.T) {
|
||||||
},
|
},
|
||||||
// Tests selfdestructed contract.
|
// Tests selfdestructed contract.
|
||||||
{
|
{
|
||||||
tag: latest,
|
name: "selfdestruct",
|
||||||
|
tag: latest,
|
||||||
blocks: []CallBatch{{
|
blocks: []CallBatch{{
|
||||||
Calls: []TransactionArgs{{
|
Calls: []TransactionArgs{{
|
||||||
From: &accounts[0].addr,
|
From: &accounts[0].addr,
|
||||||
|
|
@ -1111,37 +1121,37 @@ func TestMulticallV1(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, tc := range testSuite {
|
for i, tc := range testSuite {
|
||||||
opts := multicallOpts{Blocks: tc.blocks}
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
if tc.includeTransfers != nil && *tc.includeTransfers {
|
opts := multicallOpts{Blocks: tc.blocks}
|
||||||
opts.TraceTransfers = true
|
if tc.includeTransfers != nil && *tc.includeTransfers {
|
||||||
}
|
opts.TraceTransfers = true
|
||||||
result, err := api.MulticallV1(context.Background(), opts, tc.tag)
|
|
||||||
if tc.expectErr != nil {
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("test %d: want error %v, have nothing", i, tc.expectErr)
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
if !errors.Is(err, tc.expectErr) {
|
result, err := api.MulticallV1(context.Background(), opts, tc.tag)
|
||||||
// Second try
|
if tc.expectErr != nil {
|
||||||
if !reflect.DeepEqual(err, tc.expectErr) {
|
if err == nil {
|
||||||
t.Errorf("test %d: error mismatch, want %v, have %v", i, tc.expectErr, err)
|
t.Fatalf("test %d: want error %v, have nothing", i, tc.expectErr)
|
||||||
}
|
}
|
||||||
|
if !errors.Is(err, tc.expectErr) {
|
||||||
|
// Second try
|
||||||
|
if !reflect.DeepEqual(err, tc.expectErr) {
|
||||||
|
t.Errorf("test %d: error mismatch, want %v, have %v", i, tc.expectErr, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
continue
|
if err != nil {
|
||||||
}
|
t.Fatalf("test %d: want no error, have %v", i, err)
|
||||||
if err != nil {
|
}
|
||||||
t.Errorf("test %d: want no error, have %v", i, err)
|
// Turn result into res-struct
|
||||||
continue
|
var have []blockRes
|
||||||
}
|
resBytes, _ := json.Marshal(result)
|
||||||
// Turn result into res-struct
|
if err := json.Unmarshal(resBytes, &have); err != nil {
|
||||||
var have []blockRes
|
t.Fatalf("failed to unmarshal result: %v", err)
|
||||||
resBytes, _ := json.Marshal(result)
|
}
|
||||||
if err := json.Unmarshal(resBytes, &have); err != nil {
|
if !reflect.DeepEqual(have, tc.want) {
|
||||||
t.Fatalf("failed to unmarshal result: %v", err)
|
t.Errorf("test %d, result mismatch, have\n%v\n, want\n%v\n", i, have, tc.want)
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(have, tc.want) {
|
})
|
||||||
t.Errorf("test %d, result mismatch, have\n%v\n, want\n%v\n", i, have, tc.want)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue