81 lines
1.3 KiB
Go
81 lines
1.3 KiB
Go
package flags
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestFlagMapValueSet(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("missing =", func(t *testing.T) {
|
|
|
|
f := new(FlagMapValue)
|
|
if err := f.Set("foo"); err == nil {
|
|
t.Fatal("expected error, got nil")
|
|
}
|
|
})
|
|
|
|
t.Run("sets", func(t *testing.T) {
|
|
|
|
f := new(FlagMapValue)
|
|
if err := f.Set("foo=bar"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
r, ok := (*f)["foo"]
|
|
if !ok {
|
|
t.Errorf("missing value: %#v", f)
|
|
}
|
|
if exp := "bar"; r != exp {
|
|
t.Errorf("expected %q to be %q", r, exp)
|
|
}
|
|
})
|
|
|
|
t.Run("sets multiple", func(t *testing.T) {
|
|
|
|
f := new(FlagMapValue)
|
|
|
|
r := map[string]string{
|
|
"foo": "bar",
|
|
"zip": "zap",
|
|
"cat": "dog",
|
|
}
|
|
|
|
for k, v := range r {
|
|
if err := f.Set(fmt.Sprintf("%s=%s", k, v)); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
for k, v := range r {
|
|
r, ok := (*f)[k]
|
|
if !ok {
|
|
t.Errorf("missing value %q: %#v", k, f)
|
|
}
|
|
if exp := v; r != exp {
|
|
t.Errorf("expected %q to be %q", r, exp)
|
|
}
|
|
}
|
|
})
|
|
|
|
t.Run("overwrites", func(t *testing.T) {
|
|
|
|
f := new(FlagMapValue)
|
|
if err := f.Set("foo=bar"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := f.Set("foo=zip"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
r, ok := (*f)["foo"]
|
|
if !ok {
|
|
t.Errorf("missing value: %#v", f)
|
|
}
|
|
if exp := "zip"; r != exp {
|
|
t.Errorf("expected %q to be %q", r, exp)
|
|
}
|
|
})
|
|
}
|