go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/errutil/append_test.go (about) 1 /* 2 3 Copyright (c) 2023 - Present. Will Charczuk. All rights reserved. 4 Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository. 5 6 */ 7 8 package errutil 9 10 import ( 11 "errors" 12 "testing" 13 14 "go.charczuk.com/sdk/assert" 15 ) 16 17 func Test_Append(t *testing.T) { 18 original := Multi([]error{errors.New("foo")}) 19 20 result := Append(original, errors.New("bar")).(Multi) 21 if len(result) != 2 { 22 t.Fatalf("wrong len: %d", len(result)) 23 } 24 25 original = Multi{} 26 result = Append(original, errors.New("bar")).(Multi) 27 if len(result) != 1 { 28 t.Fatalf("wrong len: %d", len(result)) 29 } 30 31 // Test when a typed nil is passed 32 var e Multi 33 result = Append(e, errors.New("baz")).(Multi) 34 if len(result) != 1 { 35 t.Fatalf("wrong len: %d", len(result)) 36 } 37 38 // Test flattening 39 original = Multi([]error{errors.New("foo")}) 40 41 result = Append(original, Append(nil, errors.New("foo"), errors.New("bar"))).(Multi) 42 if len(result) != 2 { 43 t.Fatalf("wrong len: %d", len(result)) 44 } 45 } 46 47 func Test_Append_nil_error(t *testing.T) { 48 var err error 49 result := Append(err, errors.New("bar")).(Multi) 50 if len(result) != 1 { 51 t.Fatalf("wrong len: %d", len(result)) 52 } 53 } 54 55 func Test_Append_nilErrorArg(t *testing.T) { 56 var err error 57 var nilErr error 58 result := Append(err, nilErr) 59 if result != nil { 60 t.Fatalf("expected nil, was: %v", result) 61 } 62 } 63 64 func Test_Append_nonMulti(t *testing.T) { 65 original := errors.New("foo") 66 result := Append(original, errors.New("bar")).(Multi) 67 if len(result) != 2 { 68 t.Fatalf("wrong len: %d", len(result)) 69 } 70 } 71 72 func Test_Append_nonMulti_Multi(t *testing.T) { 73 original := errors.New("foo") 74 result := Append(original, Append(nil, errors.New("bar"))).(Multi) 75 if len(result) != 2 { 76 t.Fatalf("wrong len: %d", len(result)) 77 } 78 } 79 80 func Test_AppendFlat(t *testing.T) { 81 root := errors.New("root") 82 err0 := errors.New("test error 0") 83 err1 := errors.New("test error 1") 84 err2 := errors.New("test error 2") 85 86 nested1 := Append(root, err0, err1) 87 nested2 := Append(root, err1, err2) 88 89 flat := AppendFlat(root, nested1, nested2) 90 91 assert.ItsLen(t, flat, 7) 92 } 93 94 func Test_AppendFlat_nils(t *testing.T) { 95 root := errors.New("root") 96 err0 := errors.New("test error 0") 97 err1 := errors.New("test error 1") 98 err2 := errors.New("test error 2") 99 100 nested1 := Append(root, err0, nil, err1) 101 nested2 := Append(root, nil, err1, err2) 102 103 flat := AppendFlat(root, nested1, nested2) 104 105 assert.ItsLen(t, flat, 7) 106 } 107 108 func Test_Append_notFlat(t *testing.T) { 109 root := errors.New("root") 110 err0 := errors.New("test error 0") 111 err1 := errors.New("test error 1") 112 err2 := errors.New("test error 2") 113 114 nested1 := Append(root, err0, err1) 115 nested2 := Append(root, err1, err2) 116 117 flat := Append(root, nested1, nested2) 118 119 assert.ItsLen(t, flat, 3) 120 }