mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
core/types: add yParity unit tests
This commit is contained in:
parent
f1243b462f
commit
7b4bc395c3
1 changed files with 94 additions and 0 deletions
|
|
@ -451,3 +451,97 @@ func TestTransactionSizes(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestYParityJSONUnmarshalling(t *testing.T) {
|
||||
baseJson := map[string]interface{}{
|
||||
// type is filled in by the test
|
||||
"chainId": "0x7",
|
||||
"nonce": "0x0",
|
||||
"to": "0x1b442286e32ddcaa6e2570ce9ed85f4b4fc87425",
|
||||
"gas": "0x124f8",
|
||||
"gasPrice": "0x693d4ca8",
|
||||
"maxPriorityFeePerGas": "0x3b9aca00",
|
||||
"maxFeePerGas": "0x6fc23ac00",
|
||||
"maxFeePerBlobGas": "0x3b9aca00",
|
||||
"value": "0x0",
|
||||
"input": "0x",
|
||||
"accessList": []interface{}{},
|
||||
"blobVersionedHashes": []string{
|
||||
"0x010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c444014",
|
||||
},
|
||||
|
||||
// v and yParity are filled in by the test
|
||||
"r": "0x2a922afc784d07e98012da29f2f37cae1f73eda78aa8805d3df6ee5dbb41ec1",
|
||||
"s": "0x4f1f75ae6bcdf4970b4f305da1a15d8c5ddb21f555444beab77c9af2baab14",
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
v string
|
||||
yParity string
|
||||
wantErr error
|
||||
}{
|
||||
// Valid v and yParity
|
||||
{"valid v and yParity, 0x0", "0x0", "0x0", nil},
|
||||
{"valid v and yParity, 0x1", "0x1", "0x1", nil},
|
||||
|
||||
// Valid v, missing yParity
|
||||
{"valid v, missing yParity, 0x0", "0x0", "", nil},
|
||||
{"valid v, missing yParity, 0x1", "0x1", "", nil},
|
||||
|
||||
// Valid yParity, missing v
|
||||
{"valid yParity, missing v, 0x0", "", "0x0", nil},
|
||||
{"valid yParity, missing v, 0x1", "", "0x1", nil},
|
||||
|
||||
// Invalid yParity
|
||||
{"invalid yParity, 0x2", "", "0x2", errInvalidYParity},
|
||||
|
||||
// Conflicting v and yParity
|
||||
{"conflicting v and yParity", "0x1", "0x0", errVYParityMismatch},
|
||||
|
||||
// Missing v and yParity
|
||||
{"missing v and yParity", "", "", errVYParityMissing},
|
||||
}
|
||||
|
||||
// Run for all types that accept yParity
|
||||
t.Parallel()
|
||||
for _, txType := range []uint64{
|
||||
AccessListTxType,
|
||||
DynamicFeeTxType,
|
||||
BlobTxType,
|
||||
} {
|
||||
txType := txType
|
||||
for _, test := range tests {
|
||||
test := test
|
||||
t.Run(fmt.Sprintf("txType=%d: %s", txType, test.name), func(t *testing.T) {
|
||||
// Copy the base json
|
||||
testJson := make(map[string]interface{})
|
||||
for k, v := range baseJson {
|
||||
testJson[k] = v
|
||||
}
|
||||
|
||||
// Set v, yParity and type
|
||||
if test.v != "" {
|
||||
testJson["v"] = test.v
|
||||
}
|
||||
if test.yParity != "" {
|
||||
testJson["yParity"] = test.yParity
|
||||
}
|
||||
testJson["type"] = fmt.Sprintf("0x%x", txType)
|
||||
|
||||
// Marshal the JSON
|
||||
jsonBytes, err := json.Marshal(testJson)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Unmarshal the tx
|
||||
var tx Transaction
|
||||
err = tx.UnmarshalJSON(jsonBytes)
|
||||
if err != test.wantErr {
|
||||
t.Fatalf("wrong error: got %v, want %v", err, test.wantErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue