package builder import ( "testing" ) func TestBuilderFlags(t *testing.T) { var expected string var err error // --- bf := NewBFlags() bf.Args = []string{} if err := bf.Parse(); err != nil { t.Fatalf("Test1 of %q was supposed to work: %s", bf.Args, err) } // --- bf = NewBFlags() bf.Args = []string{"--"} if err := bf.Parse(); err != nil { t.Fatalf("Test2 of %q was supposed to work: %s", bf.Args, err) } // --- bf = NewBFlags() flStr1 := bf.AddString("str1", "") flBool1 := bf.AddBool("bool1", false) bf.Args = []string{} if err = bf.Parse(); err != nil { t.Fatalf("Test3 of %q was supposed to work: %s", bf.Args, err) } if flStr1.IsUsed() == true { t.Fatalf("Test3 - str1 was not used!") } if flBool1.IsUsed() == true { t.Fatalf("Test3 - bool1 was not used!") } // --- bf = NewBFlags() flStr1 = bf.AddString("str1", "HI") flBool1 = bf.AddBool("bool1", false) bf.Args = []string{} if err = bf.Parse(); err != nil { t.Fatalf("Test4 of %q was supposed to work: %s", bf.Args, err) } if flStr1.Value != "HI" { t.Fatalf("Str1 was supposed to default to: HI") } if flBool1.IsTrue() { t.Fatalf("Bool1 was supposed to default to: false") } if flStr1.IsUsed() == true { t.Fatalf("Str1 was not used!") } if flBool1.IsUsed() == true { t.Fatalf("Bool1 was not used!") } // --- bf = NewBFlags() flStr1 = bf.AddString("str1", "HI") bf.Args = []string{"--str1"} if err = bf.Parse(); err == nil { t.Fatalf("Test %q was supposed to fail", bf.Args) } // --- bf = NewBFlags() flStr1 = bf.AddString("str1", "HI") bf.Args = []string{"--str1="} if err = bf.Parse(); err != nil { t.Fatalf("Test %q was supposed to work: %s", bf.Args, err) } expected = "" if flStr1.Value != expected { t.Fatalf("Str1 (%q) should be: %q", flStr1.Value, expected) } // --- bf = NewBFlags() flStr1 = bf.AddString("str1", "HI") bf.Args = []string{"--str1=BYE"} if err = bf.Parse(); err != nil { t.Fatalf("Test %q was supposed to work: %s", bf.Args, err) } expected = "BYE" if flStr1.Value != expected { t.Fatalf("Str1 (%q) should be: %q", flStr1.Value, expected) } // --- bf = NewBFlags() flBool1 = bf.AddBool("bool1", false) bf.Args = []string{"--bool1"} if err = bf.Parse(); err != nil { t.Fatalf("Test %q was supposed to work: %s", bf.Args, err) } if !flBool1.IsTrue() { t.Fatalf("Test-b1 Bool1 was supposed to be true") } // --- bf = NewBFlags() flBool1 = bf.AddBool("bool1", false) bf.Args = []string{"--bool1=true"} if err = bf.Parse(); err != nil { t.Fatalf("Test %q was supposed to work: %s", bf.Args, err) } if !flBool1.IsTrue() { t.Fatalf("Test-b2 Bool1 was supposed to be true") } // --- bf = NewBFlags() flBool1 = bf.AddBool("bool1", false) bf.Args = []string{"--bool1=false"} if err = bf.Parse(); err != nil { t.Fatalf("Test %q was supposed to work: %s", bf.Args, err) } if flBool1.IsTrue() { t.Fatalf("Test-b3 Bool1 was supposed to be false") } // --- bf = NewBFlags() flBool1 = bf.AddBool("bool1", false) bf.Args = []string{"--bool1=false1"} if err = bf.Parse(); err == nil { t.Fatalf("Test %q was supposed to fail", bf.Args) } // --- bf = NewBFlags() flBool1 = bf.AddBool("bool1", false) bf.Args = []string{"--bool2"} if err = bf.Parse(); err == nil { t.Fatalf("Test %q was supposed to fail", bf.Args) } // --- bf = NewBFlags() flStr1 = bf.AddString("str1", "HI") flBool1 = bf.AddBool("bool1", false) bf.Args = []string{"--bool1", "--str1=BYE"} if err = bf.Parse(); err != nil { t.Fatalf("Test %q was supposed to work: %s", bf.Args, err) } if flStr1.Value != "BYE" { t.Fatalf("Teset %s, str1 should be BYE", bf.Args) } if !flBool1.IsTrue() { t.Fatalf("Teset %s, bool1 should be true", bf.Args) } }