10 func setUpIP(ip *net.IP) *FlagSet {
11 f := NewFlagSet("test", ContinueOnError)
12 f.IPVar(ip, "address", net.ParseIP("0.0.0.0"), "IP Address")
16 func TestIP(t *testing.T) {
17 testCases := []struct {
22 {"0.0.0.0", true, "0.0.0.0"},
23 {" 0.0.0.0 ", true, "0.0.0.0"},
24 {"1.2.3.4", true, "1.2.3.4"},
25 {"127.0.0.1", true, "127.0.0.1"},
26 {"255.255.255.255", true, "255.255.255.255"},
29 {"localhost", false, ""},
31 {"0.0.0.", false, ""},
32 {"0.0.0.0.", false, ""},
33 {"0.0.0.256", false, ""},
34 {"0 . 0 . 0 . 0", false, ""},
37 devnull, _ := os.Open(os.DevNull)
39 for i := range testCases {
45 arg := fmt.Sprintf("--address=%s", tc.input)
46 err := f.Parse([]string{arg})
47 if err != nil && tc.success == true {
48 t.Errorf("expected success, got %q", err)
50 } else if err == nil && tc.success == false {
51 t.Errorf("expected failure")
53 } else if tc.success {
54 ip, err := f.GetIP("address")
56 t.Errorf("Got error trying to fetch the IP flag: %v", err)
58 if ip.String() != tc.expected {
59 t.Errorf("expected %q, got %q", tc.expected, ip.String())