github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/internal/cli/flagset/flagset_test.go (about)

     1  package flagset
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestFlagsetBool(t *testing.T) {
    11  	f := NewFlagSet("")
    12  
    13  	value := false
    14  	f.BoolFlag(&BoolFlag{
    15  		Name:  "flag",
    16  		Value: &value,
    17  	})
    18  
    19  	assert.NoError(t, f.Parse([]string{"--flag", "true"}))
    20  	assert.Equal(t, value, true)
    21  }
    22  
    23  func TestFlagsetSliceString(t *testing.T) {
    24  	f := NewFlagSet("")
    25  
    26  	value := []string{"a", "b", "c"}
    27  	f.SliceStringFlag(&SliceStringFlag{
    28  		Name:    "flag",
    29  		Value:   &value,
    30  		Default: value,
    31  	})
    32  
    33  	assert.NoError(t, f.Parse([]string{}))
    34  	assert.Equal(t, value, []string{"a", "b", "c"})
    35  	assert.NoError(t, f.Parse([]string{"--flag", "a,b"}))
    36  	assert.Equal(t, value, []string{"a", "b"})
    37  }
    38  
    39  func TestFlagsetDuration(t *testing.T) {
    40  	f := NewFlagSet("")
    41  
    42  	value := time.Duration(0)
    43  	f.DurationFlag(&DurationFlag{
    44  		Name:  "flag",
    45  		Value: &value,
    46  	})
    47  
    48  	assert.NoError(t, f.Parse([]string{"--flag", "1m"}))
    49  	assert.Equal(t, value, 1*time.Minute)
    50  }
    51  
    52  func TestFlagsetMapString(t *testing.T) {
    53  	f := NewFlagSet("")
    54  
    55  	value := map[string]string{}
    56  	f.MapStringFlag(&MapStringFlag{
    57  		Name:  "flag",
    58  		Value: &value,
    59  	})
    60  
    61  	assert.NoError(t, f.Parse([]string{"--flag", "a=b,c=d"}))
    62  	assert.Equal(t, value, map[string]string{"a": "b", "c": "d"})
    63  }