github.com/gogf/gf@v1.16.9/errors/gerror/gerror_z_unit_test.go (about) 1 // Copyright GoFrame Author(https://goframe.org). 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/gogf/gf. 6 7 package gerror_test 8 9 import ( 10 "errors" 11 "fmt" 12 "github.com/gogf/gf/errors/gcode" 13 "github.com/gogf/gf/internal/json" 14 "testing" 15 16 "github.com/gogf/gf/errors/gerror" 17 "github.com/gogf/gf/test/gtest" 18 ) 19 20 func nilError() error { 21 return nil 22 } 23 24 func Test_Nil(t *testing.T) { 25 gtest.C(t, func(t *gtest.T) { 26 t.Assert(gerror.New(""), nil) 27 t.Assert(gerror.Wrap(nilError(), "test"), nil) 28 }) 29 } 30 31 func Test_New(t *testing.T) { 32 gtest.C(t, func(t *gtest.T) { 33 err := gerror.New("1") 34 t.AssertNE(err, nil) 35 t.Assert(err.Error(), "1") 36 }) 37 gtest.C(t, func(t *gtest.T) { 38 err := gerror.Newf("%d", 1) 39 t.AssertNE(err, nil) 40 t.Assert(err.Error(), "1") 41 }) 42 gtest.C(t, func(t *gtest.T) { 43 err := gerror.NewSkip(1, "1") 44 t.AssertNE(err, nil) 45 t.Assert(err.Error(), "1") 46 }) 47 gtest.C(t, func(t *gtest.T) { 48 err := gerror.NewSkipf(1, "%d", 1) 49 t.AssertNE(err, nil) 50 t.Assert(err.Error(), "1") 51 }) 52 } 53 54 func Test_Wrap(t *testing.T) { 55 gtest.C(t, func(t *gtest.T) { 56 err := errors.New("1") 57 err = gerror.Wrap(err, "2") 58 err = gerror.Wrap(err, "3") 59 t.AssertNE(err, nil) 60 t.Assert(err.Error(), "3: 2: 1") 61 }) 62 gtest.C(t, func(t *gtest.T) { 63 err := gerror.New("1") 64 err = gerror.Wrap(err, "2") 65 err = gerror.Wrap(err, "3") 66 t.AssertNE(err, nil) 67 t.Assert(err.Error(), "3: 2: 1") 68 }) 69 gtest.C(t, func(t *gtest.T) { 70 err := gerror.New("1") 71 err = gerror.Wrap(err, "") 72 t.AssertNE(err, nil) 73 t.Assert(err.Error(), "1") 74 }) 75 } 76 77 func Test_Wrapf(t *testing.T) { 78 gtest.C(t, func(t *gtest.T) { 79 err := errors.New("1") 80 err = gerror.Wrapf(err, "%d", 2) 81 err = gerror.Wrapf(err, "%d", 3) 82 t.AssertNE(err, nil) 83 t.Assert(err.Error(), "3: 2: 1") 84 }) 85 gtest.C(t, func(t *gtest.T) { 86 err := gerror.New("1") 87 err = gerror.Wrapf(err, "%d", 2) 88 err = gerror.Wrapf(err, "%d", 3) 89 t.AssertNE(err, nil) 90 t.Assert(err.Error(), "3: 2: 1") 91 }) 92 gtest.C(t, func(t *gtest.T) { 93 err := gerror.New("1") 94 err = gerror.Wrapf(err, "") 95 t.AssertNE(err, nil) 96 t.Assert(err.Error(), "1") 97 }) 98 } 99 100 func Test_WrapSkip(t *testing.T) { 101 gtest.C(t, func(t *gtest.T) { 102 err := errors.New("1") 103 err = gerror.WrapSkip(1, err, "2") 104 err = gerror.WrapSkip(1, err, "3") 105 t.AssertNE(err, nil) 106 t.Assert(err.Error(), "3: 2: 1") 107 }) 108 gtest.C(t, func(t *gtest.T) { 109 err := gerror.New("1") 110 err = gerror.WrapSkip(1, err, "2") 111 err = gerror.WrapSkip(1, err, "3") 112 t.AssertNE(err, nil) 113 t.Assert(err.Error(), "3: 2: 1") 114 }) 115 gtest.C(t, func(t *gtest.T) { 116 err := gerror.New("1") 117 err = gerror.WrapSkip(1, err, "") 118 t.AssertNE(err, nil) 119 t.Assert(err.Error(), "1") 120 }) 121 } 122 123 func Test_WrapSkipf(t *testing.T) { 124 gtest.C(t, func(t *gtest.T) { 125 err := errors.New("1") 126 err = gerror.WrapSkipf(1, err, "2") 127 err = gerror.WrapSkipf(1, err, "3") 128 t.AssertNE(err, nil) 129 t.Assert(err.Error(), "3: 2: 1") 130 }) 131 gtest.C(t, func(t *gtest.T) { 132 err := gerror.New("1") 133 err = gerror.WrapSkipf(1, err, "2") 134 err = gerror.WrapSkipf(1, err, "3") 135 t.AssertNE(err, nil) 136 t.Assert(err.Error(), "3: 2: 1") 137 }) 138 gtest.C(t, func(t *gtest.T) { 139 err := gerror.New("1") 140 err = gerror.WrapSkipf(1, err, "") 141 t.AssertNE(err, nil) 142 t.Assert(err.Error(), "1") 143 }) 144 } 145 146 func Test_Cause(t *testing.T) { 147 gtest.C(t, func(t *gtest.T) { 148 err := errors.New("1") 149 t.Assert(gerror.Cause(err), err) 150 }) 151 152 gtest.C(t, func(t *gtest.T) { 153 err := errors.New("1") 154 err = gerror.Wrap(err, "2") 155 err = gerror.Wrap(err, "3") 156 t.Assert(gerror.Cause(err), "1") 157 }) 158 159 gtest.C(t, func(t *gtest.T) { 160 err := gerror.New("1") 161 t.Assert(gerror.Cause(err), "1") 162 }) 163 164 gtest.C(t, func(t *gtest.T) { 165 err := gerror.New("1") 166 err = gerror.Wrap(err, "2") 167 err = gerror.Wrap(err, "3") 168 t.Assert(gerror.Cause(err), "1") 169 }) 170 } 171 172 func Test_Format(t *testing.T) { 173 gtest.C(t, func(t *gtest.T) { 174 err := errors.New("1") 175 err = gerror.Wrap(err, "2") 176 err = gerror.Wrap(err, "3") 177 t.AssertNE(err, nil) 178 t.Assert(fmt.Sprintf("%s", err), "3: 2: 1") 179 t.Assert(fmt.Sprintf("%v", err), "3: 2: 1") 180 }) 181 182 gtest.C(t, func(t *gtest.T) { 183 err := gerror.New("1") 184 err = gerror.Wrap(err, "2") 185 err = gerror.Wrap(err, "3") 186 t.AssertNE(err, nil) 187 t.Assert(fmt.Sprintf("%s", err), "3: 2: 1") 188 t.Assert(fmt.Sprintf("%v", err), "3: 2: 1") 189 }) 190 191 gtest.C(t, func(t *gtest.T) { 192 err := gerror.New("1") 193 err = gerror.Wrap(err, "2") 194 err = gerror.Wrap(err, "3") 195 t.AssertNE(err, nil) 196 t.Assert(fmt.Sprintf("%-s", err), "3") 197 t.Assert(fmt.Sprintf("%-v", err), "3") 198 }) 199 } 200 201 func Test_Stack(t *testing.T) { 202 gtest.C(t, func(t *gtest.T) { 203 err := errors.New("1") 204 t.Assert(fmt.Sprintf("%+v", err), "1") 205 }) 206 207 gtest.C(t, func(t *gtest.T) { 208 err := errors.New("1") 209 err = gerror.Wrap(err, "2") 210 err = gerror.Wrap(err, "3") 211 t.AssertNE(err, nil) 212 //fmt.Printf("%+v", err) 213 }) 214 215 gtest.C(t, func(t *gtest.T) { 216 err := gerror.New("1") 217 t.AssertNE(fmt.Sprintf("%+v", err), "1") 218 //fmt.Printf("%+v", err) 219 }) 220 221 gtest.C(t, func(t *gtest.T) { 222 err := gerror.New("1") 223 err = gerror.Wrap(err, "2") 224 err = gerror.Wrap(err, "3") 225 t.AssertNE(err, nil) 226 //fmt.Printf("%+v", err) 227 }) 228 } 229 230 func Test_Current(t *testing.T) { 231 gtest.C(t, func(t *gtest.T) { 232 err := errors.New("1") 233 err = gerror.Wrap(err, "2") 234 err = gerror.Wrap(err, "3") 235 t.Assert(err.Error(), "3: 2: 1") 236 t.Assert(gerror.Current(err).Error(), "3") 237 }) 238 } 239 240 func Test_Next(t *testing.T) { 241 gtest.C(t, func(t *gtest.T) { 242 err := errors.New("1") 243 err = gerror.Wrap(err, "2") 244 err = gerror.Wrap(err, "3") 245 t.Assert(err.Error(), "3: 2: 1") 246 247 err = gerror.Next(err) 248 t.Assert(err.Error(), "2: 1") 249 250 err = gerror.Next(err) 251 t.Assert(err.Error(), "1") 252 253 err = gerror.Next(err) 254 t.Assert(err, nil) 255 }) 256 } 257 258 func Test_Code(t *testing.T) { 259 gtest.C(t, func(t *gtest.T) { 260 err := errors.New("123") 261 t.Assert(gerror.Code(err), -1) 262 t.Assert(err.Error(), "123") 263 }) 264 gtest.C(t, func(t *gtest.T) { 265 err := gerror.NewCode(gcode.CodeUnknown, "123") 266 t.Assert(gerror.Code(err), gcode.CodeUnknown) 267 t.Assert(err.Error(), "123") 268 }) 269 gtest.C(t, func(t *gtest.T) { 270 err := gerror.NewCodef(gcode.New(1, "", nil), "%s", "123") 271 t.Assert(gerror.Code(err).Code(), 1) 272 t.Assert(err.Error(), "123") 273 }) 274 gtest.C(t, func(t *gtest.T) { 275 err := gerror.NewCodeSkip(gcode.New(1, "", nil), 0, "123") 276 t.Assert(gerror.Code(err).Code(), 1) 277 t.Assert(err.Error(), "123") 278 }) 279 gtest.C(t, func(t *gtest.T) { 280 err := gerror.NewCodeSkipf(gcode.New(1, "", nil), 0, "%s", "123") 281 t.Assert(gerror.Code(err).Code(), 1) 282 t.Assert(err.Error(), "123") 283 }) 284 gtest.C(t, func(t *gtest.T) { 285 err := errors.New("1") 286 err = gerror.Wrap(err, "2") 287 err = gerror.WrapCode(gcode.New(1, "", nil), err, "3") 288 t.Assert(gerror.Code(err).Code(), 1) 289 t.Assert(err.Error(), "3: 2: 1") 290 }) 291 gtest.C(t, func(t *gtest.T) { 292 err := errors.New("1") 293 err = gerror.Wrap(err, "2") 294 err = gerror.WrapCodef(gcode.New(1, "", nil), err, "%s", "3") 295 t.Assert(gerror.Code(err).Code(), 1) 296 t.Assert(err.Error(), "3: 2: 1") 297 }) 298 gtest.C(t, func(t *gtest.T) { 299 err := errors.New("1") 300 err = gerror.Wrap(err, "2") 301 err = gerror.WrapCodeSkip(gcode.New(1, "", nil), 100, err, "3") 302 t.Assert(gerror.Code(err).Code(), 1) 303 t.Assert(err.Error(), "3: 2: 1") 304 }) 305 gtest.C(t, func(t *gtest.T) { 306 err := errors.New("1") 307 err = gerror.Wrap(err, "2") 308 err = gerror.WrapCodeSkipf(gcode.New(1, "", nil), 100, err, "%s", "3") 309 t.Assert(gerror.Code(err).Code(), 1) 310 t.Assert(err.Error(), "3: 2: 1") 311 }) 312 } 313 314 func Test_Json(t *testing.T) { 315 gtest.C(t, func(t *gtest.T) { 316 err := gerror.Wrap(gerror.New("1"), "2") 317 b, e := json.Marshal(err) 318 t.Assert(e, nil) 319 t.Assert(string(b), `"2: 1"`) 320 }) 321 }