Add regex command implementation
This commit is contained in:
45
tests/contract/regex_validation_test.go
Normal file
45
tests/contract/regex_validation_test.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package contract
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/rogeecn/renamer/internal/regex"
|
||||
)
|
||||
|
||||
func TestRegexTemplateRejectsUndefinedGroup(t *testing.T) {
|
||||
req := regex.NewRequest(t.TempDir())
|
||||
req.Pattern = "^(\\w+)-(\\d+)"
|
||||
req.Template = "@3"
|
||||
|
||||
_, _, err := regex.Preview(context.Background(), req, nil)
|
||||
if err == nil {
|
||||
t.Fatalf("expected error for undefined capture group")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRegexPreviewHandlesInvalidPattern(t *testing.T) {
|
||||
req := regex.NewRequest(t.TempDir())
|
||||
req.Pattern = "(([" // invalid pattern
|
||||
req.Template = "@1"
|
||||
|
||||
_, _, err := regex.Preview(context.Background(), req, nil)
|
||||
if err == nil {
|
||||
t.Fatalf("expected error for invalid pattern")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRegexPreviewSkipsUnmatchedOptionalGroup(t *testing.T) {
|
||||
req := regex.NewRequest(t.TempDir())
|
||||
req.Pattern = "^(\\w+)(?:-(\\d+))?"
|
||||
req.Template = "@1_@2"
|
||||
|
||||
summary, _, err := regex.Preview(context.Background(), req, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
if summary.TotalCandidates != 0 {
|
||||
t.Fatalf("expected no candidates without files, got %d", summary.TotalCandidates)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user