@@ -2432,6 +2432,61 @@ func TestSetContractAdmin(t *testing.T) {
24322432 }
24332433}
24342434
2435+ func TestGasConsumed (t * testing.T ) {
2436+ specs := map [string ]struct {
2437+ originalMeter stypes.GasMeter
2438+ gasRegister WasmGasRegister
2439+ consumeGas sdk.Gas
2440+ expPanic bool
2441+ expMultipliedGasConsumed uint64
2442+ }{
2443+ "all good" : {
2444+ originalMeter : sdk .NewGasMeter (100 ),
2445+ gasRegister : NewWasmGasRegister (DefaultGasRegisterConfig ()),
2446+ consumeGas : sdk .Gas (1 ),
2447+ expMultipliedGasConsumed : 140000000 ,
2448+ },
2449+ "consumeGas = limit" : {
2450+ originalMeter : sdk .NewGasMeter (1 ),
2451+ gasRegister : NewWasmGasRegister (DefaultGasRegisterConfig ()),
2452+ consumeGas : sdk .Gas (1 ),
2453+ expMultipliedGasConsumed : 140000000 ,
2454+ },
2455+ "consumeGas > limit" : {
2456+ originalMeter : sdk .NewGasMeter (10 ),
2457+ gasRegister : NewWasmGasRegister (DefaultGasRegisterConfig ()),
2458+ consumeGas : sdk .Gas (11 ),
2459+ expPanic : true ,
2460+ },
2461+ "nil original meter" : {
2462+ gasRegister : NewWasmGasRegister (DefaultGasRegisterConfig ()),
2463+ consumeGas : sdk .Gas (1 ),
2464+ expPanic : true ,
2465+ },
2466+ "nil gas register" : {
2467+ originalMeter : sdk .NewGasMeter (100 ),
2468+ consumeGas : sdk .Gas (1 ),
2469+ expPanic : true ,
2470+ },
2471+ }
2472+
2473+ for name , spec := range specs {
2474+ t .Run (name , func (t * testing.T ) {
2475+ m := NewMultipliedGasMeter (spec .originalMeter , spec .gasRegister )
2476+ if spec .expPanic {
2477+ assert .Panics (t , func () {
2478+ m .originalMeter .ConsumeGas (spec .consumeGas , "test-panic" )
2479+ _ = m .GasConsumed ()
2480+ })
2481+ return
2482+ }
2483+
2484+ m .originalMeter .ConsumeGas (spec .consumeGas , "test" )
2485+ assert .Equal (t , spec .expMultipliedGasConsumed , m .GasConsumed ())
2486+ })
2487+ }
2488+ }
2489+
24352490func attrsToStringMap (attrs []abci.EventAttribute ) map [string ]string {
24362491 r := make (map [string ]string , len (attrs ))
24372492 for _ , v := range attrs {
0 commit comments