...

Source file src/github.com/spf13/pflag/uint_slice_test.go

Documentation: github.com/spf13/pflag

     1  package pflag
     2  
     3  import (
     4  	"fmt"
     5  	"strconv"
     6  	"strings"
     7  	"testing"
     8  )
     9  
    10  func setUpUISFlagSet(uisp *[]uint) *FlagSet {
    11  	f := NewFlagSet("test", ContinueOnError)
    12  	f.UintSliceVar(uisp, "uis", []uint{}, "Command separated list!")
    13  	return f
    14  }
    15  
    16  func setUpUISFlagSetWithDefault(uisp *[]uint) *FlagSet {
    17  	f := NewFlagSet("test", ContinueOnError)
    18  	f.UintSliceVar(uisp, "uis", []uint{0, 1}, "Command separated list!")
    19  	return f
    20  }
    21  
    22  func TestEmptyUIS(t *testing.T) {
    23  	var uis []uint
    24  	f := setUpUISFlagSet(&uis)
    25  	err := f.Parse([]string{})
    26  	if err != nil {
    27  		t.Fatal("expected no error; got", err)
    28  	}
    29  
    30  	getUIS, err := f.GetUintSlice("uis")
    31  	if err != nil {
    32  		t.Fatal("got an error from GetUintSlice():", err)
    33  	}
    34  	if len(getUIS) != 0 {
    35  		t.Fatalf("got is %v with len=%d but expected length=0", getUIS, len(getUIS))
    36  	}
    37  }
    38  
    39  func TestUIS(t *testing.T) {
    40  	var uis []uint
    41  	f := setUpUISFlagSet(&uis)
    42  
    43  	vals := []string{"1", "2", "4", "3"}
    44  	arg := fmt.Sprintf("--uis=%s", strings.Join(vals, ","))
    45  	err := f.Parse([]string{arg})
    46  	if err != nil {
    47  		t.Fatal("expected no error; got", err)
    48  	}
    49  	for i, v := range uis {
    50  		u, err := strconv.ParseUint(vals[i], 10, 0)
    51  		if err != nil {
    52  			t.Fatalf("got error: %v", err)
    53  		}
    54  		if uint(u) != v {
    55  			t.Fatalf("expected uis[%d] to be %s but got %d", i, vals[i], v)
    56  		}
    57  	}
    58  	getUIS, err := f.GetUintSlice("uis")
    59  	if err != nil {
    60  		t.Fatalf("got error: %v", err)
    61  	}
    62  	for i, v := range getUIS {
    63  		u, err := strconv.ParseUint(vals[i], 10, 0)
    64  		if err != nil {
    65  			t.Fatalf("got error: %v", err)
    66  		}
    67  		if uint(u) != v {
    68  			t.Fatalf("expected uis[%d] to be %s but got: %d from GetUintSlice", i, vals[i], v)
    69  		}
    70  	}
    71  }
    72  
    73  func TestUISDefault(t *testing.T) {
    74  	var uis []uint
    75  	f := setUpUISFlagSetWithDefault(&uis)
    76  
    77  	vals := []string{"0", "1"}
    78  
    79  	err := f.Parse([]string{})
    80  	if err != nil {
    81  		t.Fatal("expected no error; got", err)
    82  	}
    83  	for i, v := range uis {
    84  		u, err := strconv.ParseUint(vals[i], 10, 0)
    85  		if err != nil {
    86  			t.Fatalf("got error: %v", err)
    87  		}
    88  		if uint(u) != v {
    89  			t.Fatalf("expect uis[%d] to be %d but got: %d", i, u, v)
    90  		}
    91  	}
    92  
    93  	getUIS, err := f.GetUintSlice("uis")
    94  	if err != nil {
    95  		t.Fatal("got an error from GetUintSlice():", err)
    96  	}
    97  	for i, v := range getUIS {
    98  		u, err := strconv.ParseUint(vals[i], 10, 0)
    99  		if err != nil {
   100  			t.Fatal("got an error from GetIntSlice():", err)
   101  		}
   102  		if uint(u) != v {
   103  			t.Fatalf("expected uis[%d] to be %d from GetUintSlice but got: %d", i, u, v)
   104  		}
   105  	}
   106  }
   107  
   108  func TestUISWithDefault(t *testing.T) {
   109  	var uis []uint
   110  	f := setUpUISFlagSetWithDefault(&uis)
   111  
   112  	vals := []string{"1", "2"}
   113  	arg := fmt.Sprintf("--uis=%s", strings.Join(vals, ","))
   114  	err := f.Parse([]string{arg})
   115  	if err != nil {
   116  		t.Fatal("expected no error; got", err)
   117  	}
   118  	for i, v := range uis {
   119  		u, err := strconv.ParseUint(vals[i], 10, 0)
   120  		if err != nil {
   121  			t.Fatalf("got error: %v", err)
   122  		}
   123  		if uint(u) != v {
   124  			t.Fatalf("expected uis[%d] to be %d from GetUintSlice but got: %d", i, u, v)
   125  		}
   126  	}
   127  
   128  	getUIS, err := f.GetUintSlice("uis")
   129  	if err != nil {
   130  		t.Fatal("got an error from GetUintSlice():", err)
   131  	}
   132  	for i, v := range getUIS {
   133  		u, err := strconv.ParseUint(vals[i], 10, 0)
   134  		if err != nil {
   135  			t.Fatalf("got error: %v", err)
   136  		}
   137  		if uint(u) != v {
   138  			t.Fatalf("expected uis[%d] to be %d from GetUintSlice but got: %d", i, u, v)
   139  		}
   140  	}
   141  }
   142  
   143  func TestUISAsSliceValue(t *testing.T) {
   144  	var uis []uint
   145  	f := setUpUISFlagSet(&uis)
   146  
   147  	in := []string{"1", "2"}
   148  	argfmt := "--uis=%s"
   149  	arg1 := fmt.Sprintf(argfmt, in[0])
   150  	arg2 := fmt.Sprintf(argfmt, in[1])
   151  	err := f.Parse([]string{arg1, arg2})
   152  	if err != nil {
   153  		t.Fatal("expected no error; got", err)
   154  	}
   155  
   156  	f.VisitAll(func(f *Flag) {
   157  		if val, ok := f.Value.(SliceValue); ok {
   158  			_ = val.Replace([]string{"3"})
   159  		}
   160  	})
   161  	if len(uis) != 1 || uis[0] != 3 {
   162  		t.Fatalf("Expected ss to be overwritten with '3.1', but got: %v", uis)
   163  	}
   164  }
   165  
   166  func TestUISCalledTwice(t *testing.T) {
   167  	var uis []uint
   168  	f := setUpUISFlagSet(&uis)
   169  
   170  	in := []string{"1,2", "3"}
   171  	expected := []int{1, 2, 3}
   172  	argfmt := "--uis=%s"
   173  	arg1 := fmt.Sprintf(argfmt, in[0])
   174  	arg2 := fmt.Sprintf(argfmt, in[1])
   175  	err := f.Parse([]string{arg1, arg2})
   176  	if err != nil {
   177  		t.Fatal("expected no error; got", err)
   178  	}
   179  	for i, v := range uis {
   180  		if uint(expected[i]) != v {
   181  			t.Fatalf("expected uis[%d] to be %d but got: %d", i, expected[i], v)
   182  		}
   183  	}
   184  }
   185  

View as plain text