arikawa/bot/extras/arguments/flag_test.go

72 lines
1.3 KiB
Go

package arguments
import (
"reflect"
"strings"
"testing"
)
func TestFlagSet(t *testing.T) {
fs := NewFlagSet()
var b bool
fs.BoolVar(&b, "b", false, "Test boolean")
if usage := fs.Usage(); !strings.Contains(usage, "Test boolean") {
t.Fatal("Unexpected usage:", usage)
}
if err := fs.Parse([]string{"-b", "asdasd"}); err != nil {
t.Fatal("Failed to parse:", err)
}
if !b {
t.Fatal("Test boolean is false")
}
}
func TestFlag(t *testing.T) {
f := Flag{}
if err := f.ParseContent([]string{"gc", "--now", "1m4s"}); err != nil {
t.Fatal("Failed to parse:", err)
}
if f.Command() != "gc" {
t.Fatal("Unexpected command:", f.Command())
}
if args := f.Args(); !reflect.DeepEqual(args, []string{"--now", "1m4s"}) {
t.Fatal("Unexpected arguments:", args)
}
if arg := f.Arg(1200); arg != "" {
t.Fatal("Unexpected argument at 1200th:", arg)
}
if arg := f.Arg(0); arg != "--now" {
t.Fatal("Unexpected argument at 1st:", arg)
}
if s := f.String(); s != "--now 1m4s" {
t.Fatal("Unexpected string:", s)
}
fs := NewFlagSet()
var now bool
fs.BoolVar(&now, "now", false, "Now")
if err := f.With(fs.FlagSet); err != nil {
t.Fatal("Failed to parse:", err)
}
if !now {
t.Fatal("now is false")
}
if arg := fs.FlagSet.Arg(0); arg != "1m4s" {
t.Fatal("Unexpected argument:", arg)
}
}