gopkg.in/essentialkaos/ek.v3@v3.5.1/errutil/errutil_test.go (about)

     1  package errutil
     2  
     3  // ////////////////////////////////////////////////////////////////////////////////// //
     4  //                                                                                    //
     5  //                     Copyright (c) 2009-2016 Essential Kaos                         //
     6  //      Essential Kaos Open Source License <http://essentialkaos.com/ekol?en>         //
     7  //                                                                                    //
     8  // ////////////////////////////////////////////////////////////////////////////////// //
     9  
    10  import (
    11  	"errors"
    12  	"testing"
    13  
    14  	. "pkg.re/check.v1"
    15  )
    16  
    17  // ////////////////////////////////////////////////////////////////////////////////// //
    18  
    19  func Test(t *testing.T) { TestingT(t) }
    20  
    21  type ErrSuite struct{}
    22  
    23  // ////////////////////////////////////////////////////////////////////////////////// //
    24  
    25  var _ = Suite(&ErrSuite{})
    26  
    27  // ////////////////////////////////////////////////////////////////////////////////// //
    28  
    29  func (s *ErrSuite) TestPositive(c *C) {
    30  	errs := NewErrors()
    31  
    32  	errs.Add()
    33  	errs.Add(nil)
    34  	errs.Add(errors.New("1"))
    35  	errs.Add(errors.New("2"))
    36  	errs.Add(errors.New("3"))
    37  	errs.Add(errors.New("4"))
    38  	errs.Add(errors.New("5"))
    39  
    40  	c.Assert(errs.Num(), Equals, 5)
    41  	c.Assert(errs.All(), HasLen, 5)
    42  	c.Assert(errs.HasErrors(), Equals, true)
    43  	c.Assert(errs.Last(), DeepEquals, errors.New("5"))
    44  	c.Assert(errs.All(), DeepEquals,
    45  		[]error{
    46  			errors.New("1"),
    47  			errors.New("2"),
    48  			errors.New("3"),
    49  			errors.New("4"),
    50  			errors.New("5"),
    51  		},
    52  	)
    53  	c.Assert(errs.Add(nil), NotNil)
    54  }
    55  
    56  func (s *ErrSuite) TestNegative(c *C) {
    57  	errs := NewErrors()
    58  
    59  	c.Assert(errs.All(), HasLen, 0)
    60  	c.Assert(errs.HasErrors(), Equals, false)
    61  	c.Assert(errs.Last(), IsNil)
    62  }
    63  
    64  func (s *ErrSuite) TestChain(c *C) {
    65  	f1 := func() error {
    66  		return nil
    67  	}
    68  
    69  	f2 := func() error {
    70  		return errors.New("Error #2")
    71  	}
    72  
    73  	f3 := func() error {
    74  		return nil
    75  	}
    76  
    77  	c.Assert(Chain(f1, f2, f3), NotNil)
    78  	c.Assert(Chain(f1, f3), IsNil)
    79  }