package abi import ( "strings" "testing" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" ) func TestEventId(t *testing.T) { var table = []struct { definition string expectations map[string]common.Hash }{ { definition: `[ { "type" : "event", "name" : "balance", "inputs": [{ "name" : "in", "type": "uint" }] }, { "type" : "event", "name" : "check", "inputs": [{ "name" : "t", "type": "address" }, { "name": "b", "type": "uint256" }] } ]`, expectations: map[string]common.Hash{ "balance": crypto.Keccak256Hash([]byte("balance(uint256)")), "check": crypto.Keccak256Hash([]byte("check(address,uint256)")), }, }, } for _, test := range table { abi, err := JSON(strings.NewReader(test.definition)) if err != nil { t.Fatal(err) } for name, event := range abi.Events { if event.Id() != test.expectations[name] { t.Errorf("expected id to be %x, got %x", test.expectations[name], event.Id()) } } } }