diff --git a/core/vm/instructions_test.go b/core/vm/instructions_test.go index 84218e03f2..8a82de5d8b 100644 --- a/core/vm/instructions_test.go +++ b/core/vm/instructions_test.go @@ -977,39 +977,38 @@ func TestOpCLZ(t *testing.T) { evm := NewEVM(BlockContext{}, nil, params.TestChainConfig, Config{}) tests := []struct { - name string inputHex string want uint64 // expected CLZ result }{ - {"zero", "0x0", 256}, - {"one", "0x1", 255}, - {"all-ones (256 bits)", "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 0}, - {"low-40-bits", "0xffffffffff", 216}, // 40 bits, so 256-40 = 216 - {"low-11-bits", "0x6ff", 245}, // 0x6ff = 0b11011111111 (11 bits), so 256-11 = 245 + {"0x0", 256}, + {"0x1", 255}, + {"0x6ff", 245}, // 0x6ff = 0b11011111111 (11 bits), so 256-11 = 245 + {"0xffffffffff", 216}, // 40 bits, so 256-40 = 216 + {"0x4000000000000000000000000000000000000000000000000000000000000000", 1}, + {"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 1}, + {"0x8000000000000000000000000000000000000000000000000000000000000000", 0}, + {"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 0}, } - for _, tc := range tests { - t.Run(tc.name, func(t *testing.T) { - // prepare a fresh stack and PC - stack := newstack() - pc := uint64(0) + // prepare a fresh stack and PC + stack := newstack() + pc := uint64(0) - // parse input - val := new(uint256.Int) - if err := val.SetFromHex(tc.inputHex); err != nil { - t.Fatal("invalid hex uint256:", tc.inputHex) - } + // parse input + val := new(uint256.Int) + if err := val.SetFromHex(tc.inputHex); err != nil { + t.Fatal("invalid hex uint256:", tc.inputHex) + } - stack.push(val) - opCLZ(&pc, evm.interpreter, &ScopeContext{Stack: stack}) + stack.push(val) + opCLZ(&pc, evm.interpreter, &ScopeContext{Stack: stack}) - if gotLen := stack.len(); gotLen != 1 { - t.Fatalf("stack length = %d; want 1", gotLen) - } - result := stack.pop() - if got := result.Uint64(); got != tc.want { - t.Fatalf("clz(%q) = %d; want %d", tc.inputHex, got, tc.want) - } - }) + if gotLen := stack.len(); gotLen != 1 { + t.Fatalf("stack length = %d; want 1", gotLen) + } + result := stack.pop() + if got := result.Uint64(); got != tc.want { + t.Fatalf("clz(%q) = %d; want %d", tc.inputHex, got, tc.want) + } } }