1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/utils/set"
10
coretesting "github.com/juju/juju/testing"
13
type PhaseInternalSuite struct {
17
var _ = gc.Suite(new(PhaseInternalSuite))
19
func (s *PhaseInternalSuite) TestForUnused(c *gc.C) {
20
usedPhases := set.NewStrings()
21
for source, targets := range validTransitions {
22
usedPhases.Add(source.String())
23
for _, target := range targets {
24
usedPhases.Add(target.String())
28
allValidPhases := set.NewStrings(phaseNames...)
29
allValidPhases.Remove(UNKNOWN.String())
30
unused := allValidPhases.Difference(usedPhases)
31
c.Check(unused, gc.HasLen, 0)
34
func (s *PhaseInternalSuite) TestForUnreachable(c *gc.C) {
35
const initialPhase = QUIESCE
36
allSources := set.NewStrings()
37
allTargets := set.NewStrings()
38
for source, targets := range validTransitions {
39
if source != initialPhase {
40
allSources.Add(source.String())
42
for _, target := range targets {
43
allTargets.Add(target.String())
47
// Each source must be referred to at least once.
48
c.Check(allSources.Difference(allTargets), gc.HasLen, 0)