74 lines
2 KiB
Go
74 lines
2 KiB
Go
package getopt
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestInt(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
p := NewFlagSet("", 0)
|
|
var k int
|
|
p.IntVar(&k, "k", 16, "set k")
|
|
i := p.Int64("i", -1, "set i")
|
|
j := p.Uint("j", 64, "set j")
|
|
|
|
err := p.parse([]string{"bin", "-i", "32", "normal arg"})
|
|
assert.Nil(err, "Expected err to be nil")
|
|
assert.Equal(3, p.optindex, "Expected to only parse two arguments")
|
|
assert.Equal(int64(32), *i, "Expected -i argument to equal 32")
|
|
assert.Equal(uint(64), *j, "Expected -j argument to equal 64, since unset")
|
|
assert.Equal(16, k, "Expected -k argument to equal 16, since unset")
|
|
}
|
|
|
|
func TestBool(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
p := NewFlagSet("", 0)
|
|
var a bool
|
|
p.BoolVar(&a, "a", false, "set a")
|
|
b := p.Bool("b", false, "set b")
|
|
|
|
err := p.parse([]string{"bin", "-a", "normal arg"})
|
|
assert.Nil(err, "Expected err to be nil")
|
|
assert.Equal(2, p.optindex, "Expected to only parse two arguments")
|
|
assert.Equal(true, a, "Expected -a argument to be set")
|
|
assert.Equal(false, *b, "Expected -b argument to not be set")
|
|
}
|
|
|
|
func TestString(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
p := NewFlagSet("", 0)
|
|
get := p.String("c", "default", "get -c")
|
|
|
|
opt := "some options"
|
|
err := p.parse([]string{"bin", "-c", opt, "normal arg"})
|
|
assert.Nil(err, "Expected err to be nil")
|
|
assert.Equal(opt, *get, "Expected argument to be parsed")
|
|
}
|
|
|
|
func TestFloat64(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
p := NewFlagSet("", 0)
|
|
f := p.Float64("f", -3.14, "get -f")
|
|
|
|
err := p.parse([]string{"bin", "-f", "3.14", "normal arg"})
|
|
assert.Nil(err, "Expected err to be nil")
|
|
assert.Equal(3.14, *f, "Expected -f to equal 3.14")
|
|
}
|
|
|
|
func TestDuration(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
p := NewFlagSet("", 0)
|
|
d := p.Duration("d", 0, "get -d")
|
|
|
|
err := p.parse([]string{"bin", "-d", "1h3m", "normal arg"})
|
|
assert.Nil(err, "Expected err to be nil")
|
|
assert.Equal(time.Hour+3*time.Minute, *d, "Expected -d to equal 1 hour and 3 minutes")
|
|
}
|