1
0

count_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package pflag
  2. import (
  3. "os"
  4. "testing"
  5. )
  6. func setUpCount(c *int) *FlagSet {
  7. f := NewFlagSet("test", ContinueOnError)
  8. f.CountVarP(c, "verbose", "v", "a counter")
  9. return f
  10. }
  11. func TestCount(t *testing.T) {
  12. testCases := []struct {
  13. input []string
  14. success bool
  15. expected int
  16. }{
  17. {[]string{}, true, 0},
  18. {[]string{"-v"}, true, 1},
  19. {[]string{"-vvv"}, true, 3},
  20. {[]string{"-v", "-v", "-v"}, true, 3},
  21. {[]string{"-v", "--verbose", "-v"}, true, 3},
  22. {[]string{"-v=3", "-v"}, true, 4},
  23. {[]string{"--verbose=0"}, true, 0},
  24. {[]string{"-v=0"}, true, 0},
  25. {[]string{"-v=a"}, false, 0},
  26. }
  27. devnull, _ := os.Open(os.DevNull)
  28. os.Stderr = devnull
  29. for i := range testCases {
  30. var count int
  31. f := setUpCount(&count)
  32. tc := &testCases[i]
  33. err := f.Parse(tc.input)
  34. if err != nil && tc.success == true {
  35. t.Errorf("expected success, got %q", err)
  36. continue
  37. } else if err == nil && tc.success == false {
  38. t.Errorf("expected failure, got success")
  39. continue
  40. } else if tc.success {
  41. c, err := f.GetCount("verbose")
  42. if err != nil {
  43. t.Errorf("Got error trying to fetch the counter flag")
  44. }
  45. if c != tc.expected {
  46. t.Errorf("expected %d, got %d", tc.expected, c)
  47. }
  48. }
  49. }
  50. }