GoDoxy/internal/gperr/builder_test.go

54 lines
1.1 KiB
Go

package gperr_test
import (
"context"
"io"
"testing"
. "github.com/yusing/go-proxy/internal/gperr"
expect "github.com/yusing/go-proxy/internal/utils/testing"
)
func TestBuilderEmpty(t *testing.T) {
eb := NewBuilder("foo")
expect.NoError(t, eb.Error())
expect.False(t, eb.HasError())
}
func TestBuilderAddNil(t *testing.T) {
eb := NewBuilder("foo")
var err Error
for range 3 {
eb.Add(nil)
}
for range 3 {
eb.Add(err)
}
eb.AddRange(nil, nil, err)
expect.False(t, eb.HasError())
expect.NoError(t, eb.Error())
}
func TestBuilderIs(t *testing.T) {
eb := NewBuilder("foo")
eb.Add(context.Canceled)
eb.Add(io.ErrShortBuffer)
expect.True(t, eb.HasError())
expect.ErrorIs(t, io.ErrShortBuffer, eb.Error())
expect.ErrorIs(t, context.Canceled, eb.Error())
}
func TestBuilderNested(t *testing.T) {
eb := NewBuilder("action failed")
eb.Add(New("Action 1").Withf("Inner: 1").Withf("Inner: 2"))
eb.Add(New("Action 2").Withf("Inner: 3"))
got := eb.String()
expected := `action failed
• Action 1
• Inner: 1
• Inner: 2
• Action 2
• Inner: 3`
expect.Equal(t, got, expected)
}