github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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 "gopkg.in/juju/worker.v1" 11 "gopkg.in/juju/worker.v1/workertest" 12 13 "github.com/juju/juju/cmd/jujud/agent/engine" 14 ) 15 16 type FlagSuite struct { 17 testing.IsolationSuite 18 } 19 20 var _ = gc.Suite(&FlagSuite{}) 21 22 func (*FlagSuite) TestFlagOutputBadWorker(c *gc.C) { 23 in := &stubWorker{} 24 var out engine.Flag 25 err := engine.FlagOutput(in, &out) 26 c.Check(err, gc.ErrorMatches, `expected in to implement Flag; got a .*`) 27 c.Check(out, gc.IsNil) 28 } 29 30 func (*FlagSuite) TestFlagOutputBadTarget(c *gc.C) { 31 in := &stubFlagWorker{} 32 var out interface{} 33 err := engine.FlagOutput(in, &out) 34 c.Check(err, gc.ErrorMatches, `expected out to be a \*Flag; got a .*`) 35 c.Check(out, gc.IsNil) 36 } 37 38 func (*FlagSuite) TestFlagOutputSuccess(c *gc.C) { 39 in := &stubFlagWorker{} 40 var out engine.Flag 41 err := engine.FlagOutput(in, &out) 42 c.Check(err, jc.ErrorIsNil) 43 c.Check(out, gc.Equals, in) 44 } 45 46 func (*FlagSuite) TestStaticFlagWorker(c *gc.C) { 47 testStaticFlagWorker(c, false) 48 testStaticFlagWorker(c, true) 49 } 50 51 func testStaticFlagWorker(c *gc.C, value bool) { 52 w := engine.NewStaticFlagWorker(value) 53 c.Assert(w, gc.NotNil) 54 defer workertest.CleanKill(c, w) 55 56 c.Assert(w, gc.Implements, new(engine.Flag)) 57 c.Assert(w.(engine.Flag).Check(), gc.Equals, value) 58 } 59 60 type stubWorker struct { 61 worker.Worker 62 } 63 64 type stubFlagWorker struct { 65 engine.Flag 66 worker.Worker 67 }