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  }