github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/worker/uniter/hook/listsource_test.go (about)

     1  // Copyright 2012-2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package hook_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  	"gopkg.in/juju/charm.v6-unstable/hooks"
    10  
    11  	"github.com/juju/juju/worker/uniter/hook"
    12  	"github.com/juju/juju/worker/uniter/hook/hooktesting"
    13  )
    14  
    15  type ListSourceSuite struct{}
    16  
    17  var _ = gc.Suite(&ListSourceSuite{})
    18  
    19  func (s *ListSourceSuite) TestNoUpdates(c *gc.C) {
    20  	source := hook.NewListSource(hooktesting.HookList(hooks.Start, hooks.Stop))
    21  	c.Check(source.Changes(), gc.IsNil)
    22  
    23  	ch := source.Changes()
    24  	c.Check(ch, gc.IsNil)
    25  
    26  	err := source.Stop()
    27  	c.Check(err, jc.ErrorIsNil)
    28  }
    29  
    30  func (s *ListSourceSuite) TestQueue(c *gc.C) {
    31  	for i, test := range [][]hook.Info{
    32  		hooktesting.HookList(),
    33  		hooktesting.HookList(hooks.Install, hooks.Install),
    34  		hooktesting.HookList(hooks.Stop, hooks.Start, hooks.Stop),
    35  	} {
    36  		c.Logf("test %d: %v", i, test)
    37  		source := hook.NewListSource(test)
    38  		for _, expect := range test {
    39  			c.Check(source.Empty(), jc.IsFalse)
    40  			c.Check(source.Next(), gc.DeepEquals, expect)
    41  			source.Pop()
    42  		}
    43  		c.Check(source.Empty(), jc.IsTrue)
    44  		c.Check(source.Next, gc.PanicMatches, "Source is empty")
    45  		c.Check(source.Pop, gc.PanicMatches, "Source is empty")
    46  	}
    47  }