feat: initial public version
This commit is contained in:
61
logx/memory.go
Normal file
61
logx/memory.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package logx
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// Memory stores logged messages in a slice.
|
||||
type Memory struct {
|
||||
Name string
|
||||
Lines []string
|
||||
}
|
||||
|
||||
// NewMemory creates a new memory destination.
|
||||
func NewMemory(name string) *Memory {
|
||||
return &Memory{Name: name, Lines: []string{}}
|
||||
}
|
||||
|
||||
// Write implements the io.Writer interface.
|
||||
func (m *Memory) Write(p []byte) (n int, err error) {
|
||||
msg := string(p)
|
||||
m.Lines = append(m.Lines, msg)
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
// WriteString writes a string to the memory.
|
||||
func (m *Memory) WriteString(s string) {
|
||||
m.Lines = append(m.Lines, s)
|
||||
}
|
||||
|
||||
// Has returns true if the memory has the message.
|
||||
func (m *Memory) Has(msg string) bool {
|
||||
for _, line := range m.Lines {
|
||||
if strings.Contains(line, msg) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// MustHave checks if the memory has the message.
|
||||
func (m *Memory) MustHave(t *testing.T, msg string) {
|
||||
if !m.Has(msg) {
|
||||
t.Errorf("%s must have: %s", m.Name, msg)
|
||||
}
|
||||
}
|
||||
|
||||
// MustNotHave checks if the memory does not have the message.
|
||||
func (m *Memory) MustNotHave(t *testing.T, msg string) {
|
||||
if m.Has(msg) {
|
||||
t.Errorf("%s must NOT have: %s", m.Name, msg)
|
||||
}
|
||||
}
|
||||
|
||||
// Print prints memory lines to stdout.
|
||||
func (m *Memory) Print() {
|
||||
for _, line := range m.Lines {
|
||||
fmt.Print(line)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user