github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/cmd/jujud/agent/util/flag_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package util_test
     5  
     6  import (
     7  	"github.com/juju/testing"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	"github.com/juju/juju/cmd/jujud/agent/util"
    12  	"github.com/juju/juju/worker"
    13  )
    14  
    15  type FlagSuite struct {
    16  	testing.IsolationSuite
    17  }
    18  
    19  var _ = gc.Suite(&FlagSuite{})
    20  
    21  func (*FlagSuite) TestFlagOutputBadWorker(c *gc.C) {
    22  	in := &stubWorker{}
    23  	var out util.Flag
    24  	err := util.FlagOutput(in, &out)
    25  	c.Check(err, gc.ErrorMatches, `expected in to implement Flag; got a .*`)
    26  	c.Check(out, gc.IsNil)
    27  }
    28  
    29  func (*FlagSuite) TestFlagOutputBadTarget(c *gc.C) {
    30  	in := &stubFlagWorker{}
    31  	var out interface{}
    32  	err := util.FlagOutput(in, &out)
    33  	c.Check(err, gc.ErrorMatches, `expected out to be a \*Flag; got a .*`)
    34  	c.Check(out, gc.IsNil)
    35  }
    36  
    37  func (*FlagSuite) TestFlagOutputSuccess(c *gc.C) {
    38  	in := &stubFlagWorker{}
    39  	var out util.Flag
    40  	err := util.FlagOutput(in, &out)
    41  	c.Check(err, jc.ErrorIsNil)
    42  	c.Check(out, gc.Equals, in)
    43  }
    44  
    45  type stubWorker struct {
    46  	worker.Worker
    47  }
    48  
    49  type stubFlagWorker struct {
    50  	util.Flag
    51  	worker.Worker
    52  }