feat: add replace subcommand with multi-pattern support

This commit is contained in:
Rogee
2025-10-29 17:46:54 +08:00
parent fa57af8a26
commit ceea09f7be
42 changed files with 1848 additions and 14 deletions

View File

@@ -0,0 +1,31 @@
package replace_test
import (
"testing"
"github.com/rogeecn/renamer/internal/replace"
)
func TestParseArgsHandlesWhitespaceAndDuplicates(t *testing.T) {
args := []string{" draft ", "Draft", "draft", "final"}
result, err := replace.ParseArgs(args)
if err != nil {
t.Fatalf("ParseArgs returned error: %v", err)
}
if len(result.Patterns) != 2 {
t.Fatalf("expected 2 unique patterns, got %d", len(result.Patterns))
}
if len(result.Duplicates) != 1 {
t.Fatalf("expected duplicate reported, got %d", len(result.Duplicates))
}
if result.Replacement != "final" {
t.Fatalf("replacement mismatch: %s", result.Replacement)
}
}
func TestParseArgsRequiresSufficientTokens(t *testing.T) {
if _, err := replace.ParseArgs([]string{"onlyone"}); err == nil {
t.Fatalf("expected error when replacement missing")
}
}