github.com/zhongdalu/gf@v1.0.0/g/errors/gerror/gerror_test.go (about) 1 // Copyright 2019 gf Author(https://github.com/zhongdalu/gf). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/zhongdalu/gf. 6 7 package gerror_test 8 9 import ( 10 "errors" 11 "fmt" 12 "testing" 13 14 "github.com/zhongdalu/gf/g/errors/gerror" 15 "github.com/zhongdalu/gf/g/test/gtest" 16 ) 17 18 func interfaceNil() interface{} { 19 return nil 20 } 21 22 func nilError() error { 23 return nil 24 } 25 26 func Test_Nil(t *testing.T) { 27 gtest.Case(t, func() { 28 gtest.Assert(gerror.New(interfaceNil()), nil) 29 gtest.Assert(gerror.Wrap(nilError(), "test"), nil) 30 }) 31 } 32 33 func Test_Wrap(t *testing.T) { 34 gtest.Case(t, func() { 35 err := errors.New("1") 36 err = gerror.Wrap(err, "2") 37 err = gerror.Wrap(err, "3") 38 gtest.AssertNE(err, nil) 39 gtest.Assert(err.Error(), "3: 2: 1") 40 }) 41 42 gtest.Case(t, func() { 43 err := gerror.New("1") 44 err = gerror.Wrap(err, "2") 45 err = gerror.Wrap(err, "3") 46 gtest.AssertNE(err, nil) 47 gtest.Assert(err.Error(), "3: 2: 1") 48 }) 49 } 50 51 func Test_Cause(t *testing.T) { 52 gtest.Case(t, func() { 53 err := errors.New("1") 54 gtest.Assert(gerror.Cause(err), err) 55 }) 56 57 gtest.Case(t, func() { 58 err := errors.New("1") 59 err = gerror.Wrap(err, "2") 60 err = gerror.Wrap(err, "3") 61 gtest.Assert(gerror.Cause(err), "1") 62 }) 63 64 gtest.Case(t, func() { 65 err := gerror.New("1") 66 gtest.Assert(gerror.Cause(err), "1") 67 }) 68 69 gtest.Case(t, func() { 70 err := gerror.New("1") 71 err = gerror.Wrap(err, "2") 72 err = gerror.Wrap(err, "3") 73 gtest.Assert(gerror.Cause(err), "1") 74 }) 75 } 76 77 func Test_Format(t *testing.T) { 78 gtest.Case(t, func() { 79 err := errors.New("1") 80 err = gerror.Wrap(err, "2") 81 err = gerror.Wrap(err, "3") 82 gtest.AssertNE(err, nil) 83 gtest.Assert(fmt.Sprintf("%s", err), "3: 2: 1") 84 gtest.Assert(fmt.Sprintf("%v", err), "3: 2: 1") 85 }) 86 87 gtest.Case(t, func() { 88 err := gerror.New("1") 89 err = gerror.Wrap(err, "2") 90 err = gerror.Wrap(err, "3") 91 gtest.AssertNE(err, nil) 92 gtest.Assert(fmt.Sprintf("%s", err), "3: 2: 1") 93 gtest.Assert(fmt.Sprintf("%v", err), "3: 2: 1") 94 }) 95 96 gtest.Case(t, func() { 97 err := gerror.New("1") 98 err = gerror.Wrap(err, "2") 99 err = gerror.Wrap(err, "3") 100 gtest.AssertNE(err, nil) 101 gtest.Assert(fmt.Sprintf("%-s", err), "3") 102 gtest.Assert(fmt.Sprintf("%-v", err), "3") 103 }) 104 } 105 106 func Test_Stack(t *testing.T) { 107 gtest.Case(t, func() { 108 err := errors.New("1") 109 gtest.Assert(fmt.Sprintf("%+v", err), "1") 110 }) 111 112 gtest.Case(t, func() { 113 err := errors.New("1") 114 err = gerror.Wrap(err, "2") 115 err = gerror.Wrap(err, "3") 116 gtest.AssertNE(err, nil) 117 //fmt.Printf("%+v", err) 118 }) 119 120 gtest.Case(t, func() { 121 err := gerror.New("1") 122 gtest.AssertNE(fmt.Sprintf("%+v", err), "1") 123 //fmt.Printf("%+v", err) 124 }) 125 126 gtest.Case(t, func() { 127 err := gerror.New("1") 128 err = gerror.Wrap(err, "2") 129 err = gerror.Wrap(err, "3") 130 gtest.AssertNE(err, nil) 131 //fmt.Printf("%+v", err) 132 }) 133 }