diff options
Diffstat (limited to 'src/lib/flag_test.go')
-rw-r--r-- | src/lib/flag_test.go | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/lib/flag_test.go b/src/lib/flag_test.go new file mode 100644 index 000000000..1212cf89f --- /dev/null +++ b/src/lib/flag_test.go @@ -0,0 +1,56 @@ +// 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) + } + } +} |