hub.fastgit.org/hashicorp/consul.git@v1.4.5/command/flags/flag_map_value_test.go (about)

     1  package flags
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  )
     7  
     8  func TestFlagMapValueSet(t *testing.T) {
     9  	t.Parallel()
    10  
    11  	t.Run("missing =", func(t *testing.T) {
    12  
    13  		f := new(FlagMapValue)
    14  		if err := f.Set("foo"); err == nil {
    15  			t.Fatal("expected error, got nil")
    16  		}
    17  	})
    18  
    19  	t.Run("sets", func(t *testing.T) {
    20  
    21  		f := new(FlagMapValue)
    22  		if err := f.Set("foo=bar"); err != nil {
    23  			t.Fatal(err)
    24  		}
    25  
    26  		r, ok := (*f)["foo"]
    27  		if !ok {
    28  			t.Errorf("missing value: %#v", f)
    29  		}
    30  		if exp := "bar"; r != exp {
    31  			t.Errorf("expected %q to be %q", r, exp)
    32  		}
    33  	})
    34  
    35  	t.Run("sets multiple", func(t *testing.T) {
    36  
    37  		f := new(FlagMapValue)
    38  
    39  		r := map[string]string{
    40  			"foo": "bar",
    41  			"zip": "zap",
    42  			"cat": "dog",
    43  		}
    44  
    45  		for k, v := range r {
    46  			if err := f.Set(fmt.Sprintf("%s=%s", k, v)); err != nil {
    47  				t.Fatal(err)
    48  			}
    49  		}
    50  
    51  		for k, v := range r {
    52  			r, ok := (*f)[k]
    53  			if !ok {
    54  				t.Errorf("missing value %q: %#v", k, f)
    55  			}
    56  			if exp := v; r != exp {
    57  				t.Errorf("expected %q to be %q", r, exp)
    58  			}
    59  		}
    60  	})
    61  
    62  	t.Run("overwrites", func(t *testing.T) {
    63  
    64  		f := new(FlagMapValue)
    65  		if err := f.Set("foo=bar"); err != nil {
    66  			t.Fatal(err)
    67  		}
    68  		if err := f.Set("foo=zip"); err != nil {
    69  			t.Fatal(err)
    70  		}
    71  
    72  		r, ok := (*f)["foo"]
    73  		if !ok {
    74  			t.Errorf("missing value: %#v", f)
    75  		}
    76  		if exp := "zip"; r != exp {
    77  			t.Errorf("expected %q to be %q", r, exp)
    78  		}
    79  	})
    80  }