package arbitrum import ( "testing" ) // FuzzABIValidation tests ABI decoding validation functions func FuzzABIValidation(f *testing.F) { f.Fuzz(func(t *testing.T, dataLen uint16, protocol string) { defer func() { if r := recover(); r != nil { t.Errorf("ABI validation panicked with data length %d: %v", dataLen, r) } }() // Limit data length to reasonable size if dataLen > 10000 { dataLen = dataLen % 10000 } data := make([]byte, dataLen) for i := range data { data[i] = byte(i % 256) } // Test the validation functions we added to ABI decoder decoder, err := NewABIDecoder() if err != nil { t.Skip("Could not create ABI decoder") } // Test input validation err = decoder.ValidateInputData(data, protocol) // Should not panic, and error should be descriptive if present if err != nil && len(err.Error()) == 0 { t.Error("Error message should not be empty") } // Test parameter validation if data is large enough if len(data) >= 32 { err = decoder.ValidateABIParameter(data, 0, 32, "address", protocol) if err != nil && len(err.Error()) == 0 { t.Error("Parameter validation error message should not be empty") } } // Test array bounds validation if data is large enough if len(data) >= 64 { err = decoder.ValidateArrayBounds(data, 0, 2, 32, protocol) if err != nil && len(err.Error()) == 0 { t.Error("Array validation error message should not be empty") } } }) }