// Copyright 2016 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // The go-ethereum library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . 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()) } } } }