github.com/0chain/gosdk@v1.17.11/zcnbridge/errors/errors_test.go (about) 1 package errors 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 const ( 9 testCode = "test_code" 10 testText = "test text" 11 wrapCode = "wrap_code" 12 wrapText = "wrap text" 13 ) 14 15 func Test_errWrapper_Error(t *testing.T) { 16 t.Parallel() 17 18 tests := [1]struct { 19 name string 20 err error 21 want string 22 }{ 23 { 24 name: "OK", 25 err: Wrap(wrapCode, wrapText, New(testCode, testText)), 26 want: wrapCode + delim + wrapText + delim + testCode + delim + testText, 27 }, 28 } 29 30 for idx := range tests { 31 test := tests[idx] 32 t.Run(test.name, func(t *testing.T) { 33 t.Parallel() 34 35 if got := test.err.Error(); got != test.want { 36 t.Errorf("Error() got: %v | want: %v", got, test.want) 37 } 38 }) 39 } 40 } 41 42 func Test_errWrapper_Unwrap(t *testing.T) { 43 t.Parallel() 44 45 err := New(testCode, testText) 46 47 tests := [1]struct { 48 name string 49 wrapper *ErrWrapper 50 want error 51 }{ 52 { 53 name: "OK", 54 wrapper: Wrap(wrapCode, wrapText, err), 55 want: err, 56 }, 57 } 58 59 for idx := range tests { 60 test := tests[idx] 61 t.Run(test.name, func(t *testing.T) { 62 t.Parallel() 63 64 if got := test.wrapper.Unwrap(); !reflect.DeepEqual(got, test.want) { 65 t.Errorf("Unwrap() got: %#v | want: %#v", got, test.want) 66 } 67 }) 68 } 69 } 70 71 func Test_errWrapper_Wrap(t *testing.T) { 72 t.Parallel() 73 74 err := New(testCode, testText) 75 76 tests := [1]struct { 77 name string 78 error error 79 wrapper *ErrWrapper 80 want *ErrWrapper 81 }{ 82 { 83 name: "OK", 84 error: New(testCode, testText), 85 wrapper: New(wrapCode, wrapText), 86 want: &ErrWrapper{code: wrapCode, text: wrapText + delim + err.Error(), wrap: err}, 87 }, 88 } 89 90 for idx := range tests { 91 test := tests[idx] 92 t.Run(test.name, func(t *testing.T) { 93 t.Parallel() 94 95 if got := test.wrapper.Wrap(test.error); !reflect.DeepEqual(got, test.want) { 96 t.Errorf("Wrap() got: %#v | want: %#v", got, test.want) 97 } 98 }) 99 } 100 } 101 102 func Test_errAny(t *testing.T) { 103 t.Parallel() 104 105 testErr := New(testCode, testText) 106 wrapErr := Wrap(wrapCode, wrapText, testErr) 107 108 tests := [2]struct { 109 name string 110 list []error 111 wrapErr error 112 want bool 113 }{ 114 { 115 name: "TRUE", 116 list: []error{testErr}, 117 wrapErr: wrapErr, 118 want: true, 119 }, 120 { 121 name: "FALSE", 122 list: []error{testErr}, 123 wrapErr: Wrap(wrapCode, wrapText, New(testCode, testText)), 124 want: false, 125 }, 126 } 127 128 for idx := range tests { 129 test := tests[idx] 130 t.Run(test.name, func(t *testing.T) { 131 t.Parallel() 132 133 if got := Any(test.wrapErr, test.list...); got != test.want { 134 t.Errorf("errIs() got: %v | want: %v", got, test.want) 135 } 136 }) 137 } 138 } 139 140 func Test_errIs(t *testing.T) { 141 t.Parallel() 142 143 testErr := New(testCode, testText) 144 wrapErr := Wrap(wrapCode, wrapText, testErr) 145 146 tests := [2]struct { 147 name string 148 testErr error 149 wrapErr error 150 want bool 151 }{ 152 { 153 name: "TRUE", 154 testErr: testErr, 155 wrapErr: wrapErr, 156 want: true, 157 }, 158 { 159 name: "FALSE", 160 testErr: testErr, 161 wrapErr: Wrap(wrapCode, wrapText, New(testCode, testText)), 162 want: false, 163 }, 164 } 165 166 for idx := range tests { 167 test := tests[idx] 168 t.Run(test.name, func(t *testing.T) { 169 t.Parallel() 170 171 if got := Is(test.wrapErr, test.testErr); got != test.want { 172 t.Errorf("errIs() got: %v | want: %v", got, test.want) 173 } 174 }) 175 } 176 } 177 178 func Test_errNew(t *testing.T) { 179 t.Parallel() 180 181 tests := [1]struct { 182 name string 183 code string 184 text string 185 want *ErrWrapper 186 }{ 187 { 188 name: "Equal", 189 code: testCode, 190 text: testText, 191 want: &ErrWrapper{code: testCode, text: testText}, 192 }, 193 } 194 195 for idx := range tests { 196 test := tests[idx] 197 t.Run(test.name, func(t *testing.T) { 198 t.Parallel() 199 200 if got := New(test.code, test.text); !reflect.DeepEqual(got, test.want) { 201 t.Errorf("errNew() got: %#v | want: %#v", got, test.want) 202 } 203 }) 204 } 205 } 206 207 func Test_errWrap(t *testing.T) { 208 t.Parallel() 209 210 tests := [2]struct { 211 name string 212 code string 213 text string 214 wrap error 215 want string 216 }{ 217 { 218 name: "OK", 219 code: wrapCode, 220 text: wrapText, 221 wrap: New(testCode, testText), 222 want: wrapCode + delim + wrapText + delim + testCode + delim + testText, 223 }, 224 { 225 name: "nil_Wrap_OK", 226 code: wrapCode, 227 text: wrapText, 228 wrap: nil, 229 want: wrapCode + delim + wrapText, 230 }, 231 } 232 233 for idx := range tests { 234 test := tests[idx] 235 t.Run(test.name, func(t *testing.T) { 236 t.Parallel() 237 238 if got := Wrap(test.code, test.text, test.wrap).Error(); got != test.want { 239 t.Errorf("errWrap() got: %#v | want: %#v", got, test.want) 240 } 241 }) 242 } 243 }