mirror of
https://github.com/Luzifer/cloudkeys-go.git
synced 2024-11-14 00:42:44 +00:00
157 lines
3.6 KiB
Go
157 lines
3.6 KiB
Go
|
// Copyright 2009 The Go Authors. All rights reserved.
|
||
|
// Use of ths2i source code s2i governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package pflag
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
"strconv"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func setUpS2IFlagSet(s2ip *map[string]int) *FlagSet {
|
||
|
f := NewFlagSet("test", ContinueOnError)
|
||
|
f.StringToIntVar(s2ip, "s2i", map[string]int{}, "Command separated ls2it!")
|
||
|
return f
|
||
|
}
|
||
|
|
||
|
func setUpS2IFlagSetWithDefault(s2ip *map[string]int) *FlagSet {
|
||
|
f := NewFlagSet("test", ContinueOnError)
|
||
|
f.StringToIntVar(s2ip, "s2i", map[string]int{"a": 1, "b": 2}, "Command separated ls2it!")
|
||
|
return f
|
||
|
}
|
||
|
|
||
|
func createS2IFlag(vals map[string]int) string {
|
||
|
var buf bytes.Buffer
|
||
|
i := 0
|
||
|
for k, v := range vals {
|
||
|
if i > 0 {
|
||
|
buf.WriteRune(',')
|
||
|
}
|
||
|
buf.WriteString(k)
|
||
|
buf.WriteRune('=')
|
||
|
buf.WriteString(strconv.Itoa(v))
|
||
|
i++
|
||
|
}
|
||
|
return buf.String()
|
||
|
}
|
||
|
|
||
|
func TestEmptyS2I(t *testing.T) {
|
||
|
var s2i map[string]int
|
||
|
f := setUpS2IFlagSet(&s2i)
|
||
|
err := f.Parse([]string{})
|
||
|
if err != nil {
|
||
|
t.Fatal("expected no error; got", err)
|
||
|
}
|
||
|
|
||
|
getS2I, err := f.GetStringToInt("s2i")
|
||
|
if err != nil {
|
||
|
t.Fatal("got an error from GetStringToInt():", err)
|
||
|
}
|
||
|
if len(getS2I) != 0 {
|
||
|
t.Fatalf("got s2i %v with len=%d but expected length=0", getS2I, len(getS2I))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestS2I(t *testing.T) {
|
||
|
var s2i map[string]int
|
||
|
f := setUpS2IFlagSet(&s2i)
|
||
|
|
||
|
vals := map[string]int{"a": 1, "b": 2, "d": 4, "c": 3}
|
||
|
arg := fmt.Sprintf("--s2i=%s", createS2IFlag(vals))
|
||
|
err := f.Parse([]string{arg})
|
||
|
if err != nil {
|
||
|
t.Fatal("expected no error; got", err)
|
||
|
}
|
||
|
for k, v := range s2i {
|
||
|
if vals[k] != v {
|
||
|
t.Fatalf("expected s2i[%s] to be %d but got: %d", k, vals[k], v)
|
||
|
}
|
||
|
}
|
||
|
getS2I, err := f.GetStringToInt("s2i")
|
||
|
if err != nil {
|
||
|
t.Fatalf("got error: %v", err)
|
||
|
}
|
||
|
for k, v := range getS2I {
|
||
|
if vals[k] != v {
|
||
|
t.Fatalf("expected s2i[%s] to be %d but got: %d from GetStringToInt", k, vals[k], v)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestS2IDefault(t *testing.T) {
|
||
|
var s2i map[string]int
|
||
|
f := setUpS2IFlagSetWithDefault(&s2i)
|
||
|
|
||
|
vals := map[string]int{"a": 1, "b": 2}
|
||
|
|
||
|
err := f.Parse([]string{})
|
||
|
if err != nil {
|
||
|
t.Fatal("expected no error; got", err)
|
||
|
}
|
||
|
for k, v := range s2i {
|
||
|
if vals[k] != v {
|
||
|
t.Fatalf("expected s2i[%s] to be %d but got: %d", k, vals[k], v)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
getS2I, err := f.GetStringToInt("s2i")
|
||
|
if err != nil {
|
||
|
t.Fatal("got an error from GetStringToInt():", err)
|
||
|
}
|
||
|
for k, v := range getS2I {
|
||
|
if vals[k] != v {
|
||
|
t.Fatalf("expected s2i[%s] to be %d from GetStringToInt but got: %d", k, vals[k], v)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestS2IWithDefault(t *testing.T) {
|
||
|
var s2i map[string]int
|
||
|
f := setUpS2IFlagSetWithDefault(&s2i)
|
||
|
|
||
|
vals := map[string]int{"a": 1, "b": 2}
|
||
|
arg := fmt.Sprintf("--s2i=%s", createS2IFlag(vals))
|
||
|
err := f.Parse([]string{arg})
|
||
|
if err != nil {
|
||
|
t.Fatal("expected no error; got", err)
|
||
|
}
|
||
|
for k, v := range s2i {
|
||
|
if vals[k] != v {
|
||
|
t.Fatalf("expected s2i[%s] to be %d but got: %d", k, vals[k], v)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
getS2I, err := f.GetStringToInt("s2i")
|
||
|
if err != nil {
|
||
|
t.Fatal("got an error from GetStringToInt():", err)
|
||
|
}
|
||
|
for k, v := range getS2I {
|
||
|
if vals[k] != v {
|
||
|
t.Fatalf("expected s2i[%s] to be %d from GetStringToInt but got: %d", k, vals[k], v)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestS2ICalledTwice(t *testing.T) {
|
||
|
var s2i map[string]int
|
||
|
f := setUpS2IFlagSet(&s2i)
|
||
|
|
||
|
in := []string{"a=1,b=2", "b=3"}
|
||
|
expected := map[string]int{"a": 1, "b": 3}
|
||
|
argfmt := "--s2i=%s"
|
||
|
arg1 := fmt.Sprintf(argfmt, in[0])
|
||
|
arg2 := fmt.Sprintf(argfmt, in[1])
|
||
|
err := f.Parse([]string{arg1, arg2})
|
||
|
if err != nil {
|
||
|
t.Fatal("expected no error; got", err)
|
||
|
}
|
||
|
for i, v := range s2i {
|
||
|
if expected[i] != v {
|
||
|
t.Fatalf("expected s2i[%s] to be %d but got: %d", i, expected[i], v)
|
||
|
}
|
||
|
}
|
||
|
}
|