github.com/neatlab/neatio@v1.7.3-0.20220425043230-d903e92fcc75/chain/core/vm/gas_table_test.go (about)

     1  package vm
     2  
     3  import (
     4  	"math"
     5  	"testing"
     6  )
     7  
     8  func TestMemoryGasCost(t *testing.T) {
     9  	tests := []struct {
    10  		size     uint64
    11  		cost     uint64
    12  		overflow bool
    13  	}{
    14  		{0x1fffffffe0, 36028809887088637, false},
    15  		{0x1fffffffe1, 0, true},
    16  	}
    17  	for i, tt := range tests {
    18  		v, err := memoryGasCost(&Memory{}, tt.size)
    19  		if (err == errGasUintOverflow) != tt.overflow {
    20  			t.Errorf("test %d: overflow mismatch: have %v, want %v", i, err == errGasUintOverflow, tt.overflow)
    21  		}
    22  		if v != tt.cost {
    23  			t.Errorf("test %d: gas cost mismatch: have %v, want %v", i, v, tt.cost)
    24  		}
    25  	}
    26  }
    27  
    28  var eip2200Tests = []struct {
    29  	original byte
    30  	gaspool  uint64
    31  	input    string
    32  	used     uint64
    33  	refund   uint64
    34  	failure  error
    35  }{
    36  	{0, math.MaxUint64, "0x60006000556000600055", 1612, 0, nil},
    37  	{0, math.MaxUint64, "0x60006000556001600055", 20812, 0, nil},
    38  	{0, math.MaxUint64, "0x60016000556000600055", 20812, 19200, nil},
    39  	{0, math.MaxUint64, "0x60016000556002600055", 20812, 0, nil},
    40  	{0, math.MaxUint64, "0x60016000556001600055", 20812, 0, nil},
    41  	{1, math.MaxUint64, "0x60006000556000600055", 5812, 15000, nil},
    42  	{1, math.MaxUint64, "0x60006000556001600055", 5812, 4200, nil},
    43  	{1, math.MaxUint64, "0x60006000556002600055", 5812, 0, nil},
    44  	{1, math.MaxUint64, "0x60026000556000600055", 5812, 15000, nil},
    45  	{1, math.MaxUint64, "0x60026000556003600055", 5812, 0, nil},
    46  	{1, math.MaxUint64, "0x60026000556001600055", 5812, 4200, nil},
    47  	{1, math.MaxUint64, "0x60026000556002600055", 5812, 0, nil},
    48  	{1, math.MaxUint64, "0x60016000556000600055", 5812, 15000, nil},
    49  	{1, math.MaxUint64, "0x60016000556002600055", 5812, 0, nil},
    50  	{1, math.MaxUint64, "0x60016000556001600055", 1612, 0, nil},
    51  	{0, math.MaxUint64, "0x600160005560006000556001600055", 40818, 19200, nil},
    52  	{1, math.MaxUint64, "0x600060005560016000556000600055", 10818, 19200, nil},
    53  	{1, 2306, "0x6001600055", 2306, 0, ErrOutOfGas},
    54  	{1, 2307, "0x6001600055", 806, 0, nil},
    55  }