@@ -14,6 +14,13 @@ func TestWrapUnwrap(t *testing.T) {
1414
1515 assert .Equal (t , Unwrap (outer ), inner )
1616 assert .Equal (t , Unwrap (inner ), nil )
17+ assert .Equal (t , Unwrap (nil ), nil )
18+
19+ var err * DataError
20+ assert .Equal (t , Unwrap (err ), nil )
21+
22+ var errs * MultiError
23+ assert .Equal (t , Unwrap (errs ), nil )
1724}
1825
1926func TestWrapIs (t * testing.T ) {
@@ -22,6 +29,13 @@ func TestWrapIs(t *testing.T) {
2229
2330 assert .True (t , Is (outer , inner ))
2431 assert .False (t , Is (outer , errors .New ("other" )))
32+ assert .False (t , Is (nil , inner ))
33+
34+ var err * DataError
35+ assert .False (t , Is (err , inner ))
36+
37+ var errs * MultiError
38+ assert .False (t , Is (errs , inner ))
2539}
2640
2741func TestWrapAs (t * testing.T ) {
@@ -31,4 +45,32 @@ func TestWrapAs(t *testing.T) {
3145 var target * DataError
3246 assert .True (t , As (wrapped , & target ))
3347 assert .Equal (t , target , original )
48+
49+ assert .False (t , As (nil , & target ))
50+
51+ var nilErr * DataError
52+ assert .True (t , As (nilErr , & target ))
53+ assert .Equal (t , target , nilErr )
54+
55+ var multiTarget * MultiError
56+ var nilMulti * MultiError
57+ assert .True (t , As (nilMulti , & multiTarget ))
58+ assert .Equal (t , multiTarget , nilMulti )
59+ }
60+
61+ func TestWrapAsType (t * testing.T ) {
62+ original := New ("test" ).WithField ("k" , "v" )
63+ wrapped := fmt .Errorf ("wrapped: %w" , original )
64+
65+ target , ok := AsType [* DataError ](wrapped )
66+ assert .True (t , ok )
67+ assert .Equal (t , target , original )
68+
69+ _ , ok = AsType [* DataError ](nil )
70+ assert .False (t , ok )
71+
72+ var nilErr * DataError
73+ nilTarget , ok := AsType [* DataError ](nilErr )
74+ assert .True (t , ok )
75+ assert .Equal (t , nilTarget , nilErr )
3476}
0 commit comments