blob: 1212cf89ffce520e784540c7589f821c066a6dbc [file] [log] [blame]
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package flag
import (
"flag";
"fmt";
"testing";
)
var (
test_bool = flag.Bool("test_bool", true, "bool value");
test_int = flag.Int("test_int", 1, "int value");
test_int64 = flag.Int64("test_int64", 1, "int64 value");
test_uint = flag.Uint("test_uint", 1, "uint value");
test_uint64 = flag.Uint64("test_uint64", 1, "uint64 value");
test_string = flag.String("test_string", "1", "string value");
)
// Because this calls flag.Parse, it needs to be the only Test* function
func TestEverything(t *testing.T) {
flag.Parse();
m := make(map[string] *flag.Flag);
visitor := func(f *flag.Flag) {
if len(f.Name) > 5 && f.Name[0:5] == "test_" {
m[f.Name] = f
}
};
flag.VisitAll(visitor);
if len(m) != 6 {
t.Error("flag.VisitAll misses some flags");
for k, v := range m {
t.Log(k, *v)
}
}
m = make(map[string] *flag.Flag);
flag.Visit(visitor);
if len(m) != 0 {
t.Errorf("flag.Visit sees unset flags");
for k, v := range m {
t.Log(k, *v)
}
}
// Now set some flags
flag.Set("test_bool", "false");
flag.Set("test_uint", "1234");
flag.Visit(visitor);
if len(m) != 2 {
t.Error("flag.Visit fails after set");
for k, v := range m {
t.Log(k, *v)
}
}
}