diff --git a/errors/gerror/gerror_z_unit_test.go b/errors/gerror/gerror_z_unit_test.go index 3c4abcc90..7ea90bd93 100644 --- a/errors/gerror/gerror_z_unit_test.go +++ b/errors/gerror/gerror_z_unit_test.go @@ -95,10 +95,14 @@ func Test_Wrapf(t *testing.T) { t.AssertNE(err, nil) t.Assert(err.Error(), "1") }) + gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.Wrapf(nil, ""), nil) + }) } func Test_WrapSkip(t *testing.T) { gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.WrapSkip(1, nil, "2"), nil) err := errors.New("1") err = gerror.WrapSkip(1, err, "2") err = gerror.WrapSkip(1, err, "3") @@ -122,6 +126,7 @@ func Test_WrapSkip(t *testing.T) { func Test_WrapSkipf(t *testing.T) { gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.WrapSkipf(1, nil, "2"), nil) err := errors.New("1") err = gerror.WrapSkipf(1, err, "2") err = gerror.WrapSkipf(1, err, "3") @@ -145,6 +150,7 @@ func Test_WrapSkipf(t *testing.T) { func Test_Cause(t *testing.T) { gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.Cause(nil), nil) err := errors.New("1") t.Assert(gerror.Cause(err), err) }) @@ -167,6 +173,17 @@ func Test_Cause(t *testing.T) { err = gerror.Wrap(err, "3") t.Assert(gerror.Cause(err), "1") }) + + gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.Stack(nil), "") + err := errors.New("1") + t.Assert(gerror.Stack(err), err) + }) + + gtest.C(t, func(t *gtest.T) { + var e *gerror.Error = nil + t.Assert(e.Cause(), nil) + }) } func Test_Format(t *testing.T) { @@ -229,16 +246,22 @@ func Test_Stack(t *testing.T) { func Test_Current(t *testing.T) { gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.Current(nil), nil) err := errors.New("1") err = gerror.Wrap(err, "2") err = gerror.Wrap(err, "3") t.Assert(err.Error(), "3: 2: 1") t.Assert(gerror.Current(err).Error(), "3") }) + gtest.C(t, func(t *gtest.T) { + var e *gerror.Error = nil + t.Assert(e.Current(), nil) + }) } func Test_Unwrap(t *testing.T) { gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.Unwrap(nil), nil) err := errors.New("1") err = gerror.Wrap(err, "2") err = gerror.Wrap(err, "3") @@ -253,6 +276,10 @@ func Test_Unwrap(t *testing.T) { err = gerror.Unwrap(err) t.AssertNil(err) }) + gtest.C(t, func(t *gtest.T) { + var e *gerror.Error = nil + t.Assert(e.Unwrap(), nil) + }) } func Test_Code(t *testing.T) { @@ -282,6 +309,7 @@ func Test_Code(t *testing.T) { t.Assert(err.Error(), "123") }) gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.WrapCode(gcode.New(1, "", nil), nil, "3"), nil) err := errors.New("1") err = gerror.Wrap(err, "2") err = gerror.WrapCode(gcode.New(1, "", nil), err, "3") @@ -289,6 +317,7 @@ func Test_Code(t *testing.T) { t.Assert(err.Error(), "3: 2: 1") }) gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.WrapCodef(gcode.New(1, "", nil), nil, "%s", "3"), nil) err := errors.New("1") err = gerror.Wrap(err, "2") err = gerror.WrapCodef(gcode.New(1, "", nil), err, "%s", "3") @@ -296,6 +325,7 @@ func Test_Code(t *testing.T) { t.Assert(err.Error(), "3: 2: 1") }) gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.WrapCodeSkip(gcode.New(1, "", nil), 100, nil, "3"), nil) err := errors.New("1") err = gerror.Wrap(err, "2") err = gerror.WrapCodeSkip(gcode.New(1, "", nil), 100, err, "3") @@ -303,6 +333,7 @@ func Test_Code(t *testing.T) { t.Assert(err.Error(), "3: 2: 1") }) gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.WrapCodeSkipf(gcode.New(1, "", nil), 100, nil, "%s", "3"), nil) err := errors.New("1") err = gerror.Wrap(err, "2") err = gerror.WrapCodeSkipf(gcode.New(1, "", nil), 100, err, "%s", "3") @@ -311,6 +342,20 @@ func Test_Code(t *testing.T) { }) } +func TestError_Error(t *testing.T) { + gtest.C(t, func(t *gtest.T) { + var e *gerror.Error = nil + t.Assert(e.Error(), nil) + }) +} + +func TestError_Code(t *testing.T) { + gtest.C(t, func(t *gtest.T) { + var e *gerror.Error = nil + t.Assert(e.Code(), gcode.CodeNil) + }) +} + func Test_SetCode(t *testing.T) { gtest.C(t, func(t *gtest.T) { err := gerror.New("123") @@ -321,6 +366,10 @@ func Test_SetCode(t *testing.T) { t.Assert(gerror.Code(err), gcode.CodeValidationFailed) t.Assert(err.Error(), "123") }) + gtest.C(t, func(t *gtest.T) { + var err *gerror.Error = nil + err.SetCode(gcode.CodeValidationFailed) + }) } func Test_Json(t *testing.T) { @@ -353,6 +402,10 @@ func Test_Equal(t *testing.T) { t.Assert(gerror.Equal(err3, err4), false) t.Assert(gerror.Equal(err1, err4), false) }) + gtest.C(t, func(t *gtest.T) { + var e = new(gerror.Error) + t.Assert(e.Equal(e), true) + }) } func Test_Is(t *testing.T) { @@ -375,6 +428,7 @@ func Test_HashError(t *testing.T) { func Test_HashCode(t *testing.T) { gtest.C(t, func(t *gtest.T) { + t.Assert(gerror.HasCode(nil, gcode.CodeNotAuthorized), false) err1 := errors.New("1") err2 := gerror.WrapCode(gcode.CodeNotAuthorized, err1, "2") err3 := gerror.Wrap(err2, "3") @@ -385,3 +439,14 @@ func Test_HashCode(t *testing.T) { t.Assert(gerror.HasCode(err4, gcode.CodeNotAuthorized), true) }) } + +func Test_NewOption(t *testing.T) { + gtest.C(t, func(t *gtest.T) { + t.AssertNE(gerror.NewOption(gerror.Option{ + Error: errors.New("NewOptionError"), + Stack: true, + Text: "Text", + Code: gcode.CodeNotAuthorized, + }), gerror.New("NewOptionError")) + }) +}