~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/gopkg.in/juju/names.v2/volume_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2013 Canonical Ltd.
 
2
// Licensed under the LGPLv3, see LICENCE file for details.
 
3
 
 
4
package names_test
 
5
 
 
6
import (
 
7
        "fmt"
 
8
 
 
9
        gc "gopkg.in/check.v1"
 
10
 
 
11
        "gopkg.in/juju/names.v2"
 
12
)
 
13
 
 
14
type volumeSuite struct{}
 
15
 
 
16
var _ = gc.Suite(&volumeSuite{})
 
17
 
 
18
func (s *volumeSuite) TestVolumeTag(c *gc.C) {
 
19
        c.Assert(names.NewVolumeTag("1").String(), gc.Equals, "volume-1")
 
20
}
 
21
 
 
22
func (s *volumeSuite) TestVolumeNameValidity(c *gc.C) {
 
23
        assertVolumeNameValid(c, "0")
 
24
        assertVolumeNameValid(c, "0/lxc/0/0")
 
25
        assertVolumeNameValid(c, "1000")
 
26
        assertVolumeNameInvalid(c, "-1")
 
27
        assertVolumeNameInvalid(c, "")
 
28
        assertVolumeNameInvalid(c, "one")
 
29
        assertVolumeNameInvalid(c, "#")
 
30
        assertVolumeNameInvalid(c, "0/0/0") // 0/0 is not a valid machine ID
 
31
}
 
32
 
 
33
func (s *volumeSuite) TestParseVolumeTag(c *gc.C) {
 
34
        assertParseVolumeTag(c, "volume-0", names.NewVolumeTag("0"))
 
35
        assertParseVolumeTag(c, "volume-88", names.NewVolumeTag("88"))
 
36
        assertParseVolumeTag(c, "volume-0-lxc-0-88", names.NewVolumeTag("0/lxc/0/88"))
 
37
        assertParseVolumeTagInvalid(c, "", names.InvalidTagError("", ""))
 
38
        assertParseVolumeTagInvalid(c, "one", names.InvalidTagError("one", ""))
 
39
        assertParseVolumeTagInvalid(c, "volume-", names.InvalidTagError("volume-", names.VolumeTagKind))
 
40
        assertParseVolumeTagInvalid(c, "machine-0", names.InvalidTagError("machine-0", names.VolumeTagKind))
 
41
}
 
42
 
 
43
func (s *volumeSuite) TestVolumeMachine(c *gc.C) {
 
44
        assertVolumeMachine(c, "0/0", names.NewMachineTag("0"))
 
45
        assertVolumeMachine(c, "0/lxc/0/0", names.NewMachineTag("0/lxc/0"))
 
46
        assertVolumeNoMachine(c, "0")
 
47
}
 
48
 
 
49
func assertVolumeMachine(c *gc.C, id string, expect names.MachineTag) {
 
50
        t, ok := names.VolumeMachine(names.NewVolumeTag(id))
 
51
        c.Assert(ok, gc.Equals, true)
 
52
        c.Assert(t, gc.Equals, expect)
 
53
}
 
54
 
 
55
func assertVolumeNoMachine(c *gc.C, id string) {
 
56
        _, ok := names.VolumeMachine(names.NewVolumeTag(id))
 
57
        c.Assert(ok, gc.Equals, false)
 
58
}
 
59
 
 
60
func assertVolumeNameValid(c *gc.C, name string) {
 
61
        c.Assert(names.IsValidVolume(name), gc.Equals, true)
 
62
        names.NewVolumeTag(name)
 
63
}
 
64
 
 
65
func assertVolumeNameInvalid(c *gc.C, name string) {
 
66
        c.Assert(names.IsValidVolume(name), gc.Equals, false)
 
67
        testVolumeTag := func() { names.NewVolumeTag(name) }
 
68
        expect := fmt.Sprintf("%q is not a valid volume ID", name)
 
69
        c.Assert(testVolumeTag, gc.PanicMatches, expect)
 
70
}
 
71
 
 
72
func assertParseVolumeTag(c *gc.C, tag string, expect names.VolumeTag) {
 
73
        t, err := names.ParseVolumeTag(tag)
 
74
        c.Assert(err, gc.IsNil)
 
75
        c.Assert(t, gc.Equals, expect)
 
76
}
 
77
 
 
78
func assertParseVolumeTagInvalid(c *gc.C, tag string, expect error) {
 
79
        _, err := names.ParseVolumeTag(tag)
 
80
        c.Assert(err, gc.ErrorMatches, expect.Error())
 
81
}