github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/cmd/jujud/agent/engine/flag_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package engine_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/engine" 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 engine.Flag 24 err := engine.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 := engine.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 engine.Flag 40 err := engine.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 engine.Flag 51 worker.Worker 52 }