@@ -433,6 +433,54 @@ func TestDecodeTransactionLogByEventSig6(t *testing.T) {
433433 require .Equal (t , "0x00000000000000000000000000000000000000000000000000000000003fab53" , eventHexValues [3 ])
434434}
435435
436+ func TestDecodeTransactionLogByEventSig7 (t * testing.T ) {
437+ logTopics := []string {
438+ "0x7732a1c54f54c543d17e9603255b42e04ad87aa8024a0a3637f532f2e2b6d22a" ,
439+ "0x98442bdf09d14ed3859c77b17990a0fc00000000000000000000000000000000" ,
440+ }
441+ logData := "0x"
442+
443+ txnLog := types.Log {}
444+ txnLog .Topics = []common.Hash {}
445+
446+ for _ , topic := range logTopics {
447+ txnLog .Topics = append (txnLog .Topics , common .HexToHash (topic ))
448+ }
449+ txnLog .Data , _ = hexutil .Decode (logData )
450+
451+ var eventSig = "JobExecuted(bytes16 indexed)"
452+
453+ eventDef , eventValues , ok , err := ethcoder .DecodeTransactionLogByEventSig (txnLog , eventSig )
454+ require .NoError (t , err )
455+ require .True (t , ok )
456+
457+ require .Equal (t , "0x7732a1c54f54c543d17e9603255b42e04ad87aa8024a0a3637f532f2e2b6d22a" , eventDef .Hash )
458+ require .Equal (t , "JobExecuted" , eventDef .Name )
459+ require .Equal (t , "JobExecuted(bytes16)" , eventDef .Signature )
460+ require .Equal (t , []string {"bytes16" }, eventDef .ArgTypes )
461+ require .Equal (t , []bool {true }, eventDef .ArgIndexed )
462+
463+ src := eventValues [0 ].([16 ]uint8 )
464+ dst := make ([]byte , 16 )
465+ copy (dst [:], src [:])
466+
467+ require .Equal (t , 1 , len (eventValues ))
468+ require .Equal (t , "0x98442bdf09d14ed3859c77b17990a0fc" , ethcoder .HexEncode (dst ))
469+
470+ eventDef , eventValuesHex , ok , err := ethcoder .DecodeTransactionLogByEventSigAsHex (txnLog , eventSig )
471+ require .NoError (t , err )
472+ require .True (t , ok )
473+
474+ require .Equal (t , "0x7732a1c54f54c543d17e9603255b42e04ad87aa8024a0a3637f532f2e2b6d22a" , eventDef .Hash )
475+ require .Equal (t , "JobExecuted" , eventDef .Name )
476+ require .Equal (t , "JobExecuted(bytes16)" , eventDef .Signature )
477+ require .Equal (t , []string {"bytes16" }, eventDef .ArgTypes )
478+ require .Equal (t , []bool {true }, eventDef .ArgIndexed )
479+
480+ require .Equal (t , 1 , len (eventValuesHex ))
481+ require .Equal (t , "0x98442bdf09d14ed3859c77b17990a0fc" , eventValuesHex [0 ])
482+ }
483+
436484func TestEventDecoder (t * testing.T ) {
437485 ed := ethcoder .NewEventDecoder ()
438486
0 commit comments