prysm-pulse/sharding/internal/log_helper.go
Raul Jordan f009381a83 Refactor MockClient Into Internal Package (#210)
sharding: refactor mockClient into internal package

Former-commit-id: 5bb5142c92cffe0aeca0da06fdf0467d0570daee [formerly 4f9a27b0c3ddbbd578bf4d13f7818c7871d3d376]
Former-commit-id: b4164ac956933babeeb3918ac2a5c37613c67377
2018-06-21 16:17:14 -07:00

49 lines
1.0 KiB
Go

package internal
import (
"testing"
"github.com/ethereum/go-ethereum/log"
)
var _ = log.Handler(&LogHandler{})
// LogHandler provides methods for testing ethereum logs.
type LogHandler struct {
records []*log.Record
t *testing.T
}
func NewLogHandler(t *testing.T) *LogHandler {
return &LogHandler{t: t}
}
// Log adds records to the record slice.
func (t *LogHandler) Log(r *log.Record) error {
t.records = append(t.records, r)
return nil
}
// Pop the record at index 0.
func (t *LogHandler) Pop() *log.Record {
var r *log.Record
r, t.records = t.records[0], t.records[1:]
return r
}
// Length of the records slice.
func (t *LogHandler) Len() int {
return len(t.records)
}
// VerifyLogMsg verfies that the log at index 0 matches the string exactly.
// This method removes the verified message from the slice.
func (h *LogHandler) VerifyLogMsg(str string) {
if h.Len() == 0 {
h.t.Error("Expected a log, but there were none!")
}
if l := h.Pop(); l.Msg != str {
h.t.Errorf("Unexpected log: %v. Wanted: %s", l.Msg, str)
}
}