1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/testing"
8
jc "github.com/juju/testing/checkers"
11
"github.com/juju/juju/cmd/jujud/agent/engine"
12
"github.com/juju/juju/worker"
15
type ValueWorkerSuite struct {
16
testing.IsolationSuite
19
var _ = gc.Suite(&ValueWorkerSuite{})
21
func (s *ValueWorkerSuite) TestNewValueWorker_Success(c *gc.C) {
22
w, err := engine.NewValueWorker("cheese")
23
c.Assert(err, jc.ErrorIsNil)
26
c.Check(err, jc.ErrorIsNil)
29
func (s *ValueWorkerSuite) TestNewValueWorker_NilValue(c *gc.C) {
30
w, err := engine.NewValueWorker(nil)
31
c.Check(err, gc.ErrorMatches, "NewValueWorker expects a value")
35
func (s *ValueWorkerSuite) TestValueWorkerOutput_Success(c *gc.C) {
37
w, err := engine.NewValueWorker(value)
38
c.Assert(err, jc.ErrorIsNil)
40
var outVal testInterface
41
err = engine.ValueWorkerOutput(w, &outVal)
42
c.Check(err, jc.ErrorIsNil)
43
c.Check(outVal, gc.DeepEquals, value)
46
func (s *ValueWorkerSuite) TestValueWorkerOutput_BadInput(c *gc.C) {
47
var outVal testInterface
48
err := engine.ValueWorkerOutput(&testType{}, &outVal)
49
c.Check(err, gc.ErrorMatches, "in should be a \\*valueWorker; is .*")
50
c.Check(outVal, gc.IsNil)
53
func (s *ValueWorkerSuite) TestValueWorkerOutput_BadOutputIndirection(c *gc.C) {
55
w, err := engine.NewValueWorker(value)
56
c.Assert(err, jc.ErrorIsNil)
59
err = engine.ValueWorkerOutput(w, outVal)
60
c.Check(err, gc.ErrorMatches, "out should be a pointer; is .*")
61
c.Check(outVal, gc.Equals, "")
64
func (s *ValueWorkerSuite) TestValueWorkerOutput_BadOutputType(c *gc.C) {
66
w, err := engine.NewValueWorker(value)
67
c.Assert(err, jc.ErrorIsNil)
70
err = engine.ValueWorkerOutput(w, &outVal)
71
c.Check(err, gc.ErrorMatches, "cannot output into \\*string")
72
c.Check(outVal, gc.Equals, "")
75
type testInterface interface {
80
type testType struct {