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 )
}
} )
}