github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/cmd/jujud/agent/util/valueworker_test.go (about) 1 // Copyright 2015 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 ValueWorkerSuite struct { 16 testing.IsolationSuite 17 } 18 19 var _ = gc.Suite(&ValueWorkerSuite{}) 20 21 func (s *ValueWorkerSuite) TestNewValueWorker_Success(c *gc.C) { 22 w, err := util.NewValueWorker("cheese") 23 c.Assert(err, jc.ErrorIsNil) 24 25 err = worker.Stop(w) 26 c.Check(err, jc.ErrorIsNil) 27 } 28 29 func (s *ValueWorkerSuite) TestNewValueWorker_NilValue(c *gc.C) { 30 w, err := util.NewValueWorker(nil) 31 c.Check(err, gc.ErrorMatches, "NewValueWorker expects a value") 32 c.Check(w, gc.IsNil) 33 } 34 35 func (s *ValueWorkerSuite) TestValueWorkerOutput_Success(c *gc.C) { 36 value := &testType{} 37 w, err := util.NewValueWorker(value) 38 c.Assert(err, jc.ErrorIsNil) 39 40 var outVal testInterface 41 err = util.ValueWorkerOutput(w, &outVal) 42 c.Check(err, jc.ErrorIsNil) 43 c.Check(outVal, gc.DeepEquals, value) 44 } 45 46 func (s *ValueWorkerSuite) TestValueWorkerOutput_BadInput(c *gc.C) { 47 var outVal testInterface 48 err := util.ValueWorkerOutput(&testType{}, &outVal) 49 c.Check(err, gc.ErrorMatches, "in should be a \\*valueWorker; is .*") 50 c.Check(outVal, gc.IsNil) 51 } 52 53 func (s *ValueWorkerSuite) TestValueWorkerOutput_BadOutputIndirection(c *gc.C) { 54 value := &testType{} 55 w, err := util.NewValueWorker(value) 56 c.Assert(err, jc.ErrorIsNil) 57 58 var outVal string 59 err = util.ValueWorkerOutput(w, outVal) 60 c.Check(err, gc.ErrorMatches, "out should be a pointer; is .*") 61 c.Check(outVal, gc.Equals, "") 62 } 63 64 func (s *ValueWorkerSuite) TestValueWorkerOutput_BadOutputType(c *gc.C) { 65 value := &testType{} 66 w, err := util.NewValueWorker(value) 67 c.Assert(err, jc.ErrorIsNil) 68 69 var outVal string 70 err = util.ValueWorkerOutput(w, &outVal) 71 c.Check(err, gc.ErrorMatches, "cannot output into \\*string") 72 c.Check(outVal, gc.Equals, "") 73 } 74 75 type testInterface interface { 76 worker.Worker 77 Foobar() 78 } 79 80 type testType struct { 81 testInterface 82 }