FILE / ScuroNeko/Laniakea
plugins_test.go
Исходный файл и его история в репозитории.
Align docs, examples, and tests with AppData and NoData Update handler, scene, runner, and plugin generics to the new naming Ignore .codex and record the cleanup in the changelog
41 lines
1.6 KiB
Go
41 lines
1.6 KiB
Go
package laniakea
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestValidateArgsRequiresFullMatch(t *testing.T) {
|
|
intCmd := NewCommand[NoData](func(ctx *MsgContext, db NoData) error { return nil }, "int", NewCommandArg("n").SetValueType(CommandValueIntType).SetRequired())
|
|
if err := intCmd.validateArgs([]string{"123"}); err != nil {
|
|
t.Fatalf("expected valid integer argument, got %v", err)
|
|
}
|
|
if err := intCmd.validateArgs([]string{"123abc"}); !errors.Is(err, ErrCmdArgRegexpMismatch) {
|
|
t.Fatalf("expected ErrCmdArgRegexpMismatch for partial int match, got %v", err)
|
|
}
|
|
|
|
boolCmd := NewCommand[NoData](func(ctx *MsgContext, db NoData) error { return nil }, "bool", NewCommandArg("flag").SetValueType(CommandValueBoolType).SetRequired())
|
|
if err := boolCmd.validateArgs([]string{"false"}); err != nil {
|
|
t.Fatalf("expected valid bool argument, got %v", err)
|
|
}
|
|
if err := boolCmd.validateArgs([]string{"falsey"}); !errors.Is(err, ErrCmdArgRegexpMismatch) {
|
|
t.Fatalf("expected ErrCmdArgRegexpMismatch for partial bool match, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateArgsEnforcesRequiredArgIndex(t *testing.T) {
|
|
cmd := NewCommand[NoData](
|
|
func(ctx *MsgContext, db NoData) error { return nil },
|
|
"mixed",
|
|
NewCommandArg("optional"),
|
|
NewCommandArg("required").SetRequired(),
|
|
)
|
|
|
|
if err := cmd.validateArgs([]string{"only-optional"}); !errors.Is(err, ErrCmdArgCountMismatch) {
|
|
t.Fatalf("expected ErrCmdArgCountMismatch when required second arg is missing, got %v", err)
|
|
}
|
|
if err := cmd.validateArgs([]string{"optional", "required"}); err != nil {
|
|
t.Fatalf("expected both args to validate, got %v", err)
|
|
}
|
|
}
|