summaryrefslogtreecommitdiff
path: root/src/pkg/flag/flag_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/flag/flag_test.go')
-rw-r--r--src/pkg/flag/flag_test.go77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/pkg/flag/flag_test.go b/src/pkg/flag/flag_test.go
new file mode 100644
index 000000000..0d83fcf81
--- /dev/null
+++ b/src/pkg/flag/flag_test.go
@@ -0,0 +1,77 @@
+// 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", false, "bool value");
+ test_int = flag.Int("test_int", 0, "int value");
+ test_int64 = flag.Int64("test_int64", 0, "int64 value");
+ test_uint = flag.Uint("test_uint", 0, "uint value");
+ test_uint64 = flag.Uint64("test_uint64", 0, "uint64 value");
+ test_string = flag.String("test_string", "0", "string value");
+)
+
+func boolString(s string) string {
+ if s == "0" {
+ return "false"
+ }
+ return "true"
+}
+
+func TestEverything(t *testing.T) {
+ m := make(map[string] *flag.Flag);
+ desired := "0";
+ visitor := func(f *flag.Flag) {
+ if len(f.Name) > 5 && f.Name[0:5] == "test_" {
+ m[f.Name] = f;
+ ok := false;
+ switch {
+ case f.Value.String() == desired:
+ ok = true;
+ case f.Name == "test_bool" && f.Value.String() == boolString(desired):
+ ok = true;
+ }
+ if !ok {
+ t.Error("flag.Visit: bad value", f.Value.String(), "for", f.Name);
+ }
+ }
+ };
+ 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 all flags
+ flag.Set("test_bool", "true");
+ flag.Set("test_int", "1");
+ flag.Set("test_int64", "1");
+ flag.Set("test_uint", "1");
+ flag.Set("test_uint64", "1");
+ flag.Set("test_string", "1");
+ desired = "1";
+ flag.Visit(visitor);
+ if len(m) != 6 {
+ t.Error("flag.Visit fails after set");
+ for k, v := range m {
+ t.Log(k, *v)
+ }
+ }
+}