docs/cluster/options_test.go

146 lines
3.0 KiB
Go

package cluster
import (
"net"
"os"
"testing"
"github.com/stretchr/testify/assert"
)
var opts = DriverOpts{"foo1=bar", "foo2=-5", "foo3=7", "foo4=0.6", "foo5=127.0.0.1"}
func TestString(t *testing.T) {
os.Setenv("FOO_4", "bar")
// FIXME: Use Unsetenv when switching to go 1.4
defer os.Setenv("FOO_4", "")
val, ok := opts.String("foo1", "")
assert.True(t, ok)
assert.Equal(t, val, "bar")
val, ok = opts.String("foo2", "")
assert.True(t, ok)
assert.Equal(t, val, "-5")
val, ok = opts.String("foo3", "")
assert.True(t, ok)
assert.Equal(t, val, "7")
val, ok = opts.String("foo4", "")
assert.True(t, ok)
assert.Equal(t, val, "0.6")
val, ok = opts.String("", "FOO_4")
assert.True(t, ok)
assert.Equal(t, val, "bar")
val, ok = opts.String("invalid", "")
assert.False(t, ok)
assert.Equal(t, val, "")
}
func TestInt(t *testing.T) {
os.Setenv("FOO_4", "bar")
defer os.Setenv("FOO_4", "")
val, ok := opts.Int("foo1", "")
assert.True(t, ok)
assert.Equal(t, val, int64(0))
val, ok = opts.Int("foo2", "")
assert.True(t, ok)
assert.Equal(t, val, int64(-5))
val, ok = opts.Int("foo3", "")
assert.True(t, ok)
assert.Equal(t, val, int64(7))
val, ok = opts.Int("foo4", "")
assert.True(t, ok)
assert.Equal(t, val, int64(0))
val, ok = opts.Int("", "FOO_4")
assert.True(t, ok)
assert.Equal(t, val, int64(0))
val, ok = opts.Int("invalid", "")
assert.False(t, ok)
assert.Equal(t, val, int64(0))
}
func TestUint(t *testing.T) {
os.Setenv("FOO_4", "bar")
defer os.Setenv("FOO_4", "")
val, ok := opts.Uint("foo1", "")
assert.True(t, ok)
assert.Equal(t, val, uint64(0))
val, ok = opts.Uint("foo2", "")
assert.True(t, ok)
assert.Equal(t, val, uint64(0))
val, ok = opts.Uint("foo3", "")
assert.True(t, ok)
assert.Equal(t, val, uint64(7))
val, ok = opts.Uint("foo4", "")
assert.True(t, ok)
assert.Equal(t, val, uint64(0))
val, ok = opts.Uint("", "FOO_4")
assert.True(t, ok)
assert.Equal(t, val, uint64(0))
val, ok = opts.Uint("invalid", "")
assert.False(t, ok)
assert.Equal(t, val, uint64(0))
}
func TestFloat(t *testing.T) {
os.Setenv("FOO_4", "0.2")
defer os.Setenv("FOO_4", "")
val, ok := opts.Float("foo1", "")
assert.True(t, ok)
assert.Equal(t, val, 0.0)
val, ok = opts.Float("foo2", "")
assert.True(t, ok)
assert.Equal(t, val, -5.0)
val, ok = opts.Float("foo3", "")
assert.True(t, ok)
assert.Equal(t, val, 7.0)
val, ok = opts.Float("foo4", "")
assert.True(t, ok)
assert.Equal(t, val, 0.6)
val, ok = opts.Float("", "FOO_4")
assert.True(t, ok)
assert.Equal(t, val, 0.2)
val, ok = opts.Float("invalid", "")
assert.False(t, ok)
assert.Equal(t, val, 0.0)
}
func TestIP(t *testing.T) {
os.Setenv("FOO_4", "0.0.0.0")
defer os.Setenv("FOO_4", "")
val, ok := opts.IP("foo5", "")
assert.True(t, ok)
assert.Equal(t, val, net.ParseIP("127.0.0.1"))
val, ok = opts.IP("", "FOO_4")
assert.True(t, ok)
assert.Equal(t, val, net.ParseIP("0.0.0.0"))
val, ok = opts.IP("invalid", "")
assert.False(t, ok)
assert.Equal(t, val, net.IP(nil))
}