Added more test cases (1 failing)
This commit is contained in:
57
re_test.go
57
re_test.go
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"slices"
|
||||
"testing"
|
||||
)
|
||||
@@ -185,6 +186,56 @@ var reTests = []struct {
|
||||
{`a.*b`, nil, "acc\nccb", []Group{}},
|
||||
{`a.{4,5}b`, nil, "acc\nccb", []Group{}},
|
||||
{`a.b`, nil, "a\rb", []Group{{0, 3}}},
|
||||
{`a.b`, []ReFlag{RE_MULTILINE}, "a\nb", []Group{{0, 3}}},
|
||||
{`a.*b`, []ReFlag{RE_MULTILINE}, "acc\nccb", []Group{{0, 7}}},
|
||||
{`a.{4,5}b`, []ReFlag{RE_MULTILINE}, "acc\nccb", []Group{{0, 7}}},
|
||||
|
||||
{`)`, nil, ``, nil},
|
||||
{`^$`, nil, ``, []Group{{0, 0}}},
|
||||
{`abc`, nil, `abc`, []Group{{0, 3}}},
|
||||
{`abc`, nil, `xbc`, []Group{}},
|
||||
{`abc`, nil, `axc`, []Group{}},
|
||||
{`abc`, nil, `abx`, []Group{}},
|
||||
{`abc`, nil, `xabcy`, []Group{{1, 4}}},
|
||||
{`abc`, nil, `ababc`, []Group{{2, 5}}},
|
||||
{`ab*c`, nil, `abc`, []Group{{0, 3}}},
|
||||
{`ab*bc`, nil, `abc`, []Group{{0, 3}}},
|
||||
{`ab*bc`, nil, `abbc`, []Group{{0, 4}}},
|
||||
{`ab*bc`, nil, `abbbbc`, []Group{{0, 6}}},
|
||||
{`ab+bc`, nil, `abbc`, []Group{{0, 4}}},
|
||||
{`ab+bc`, nil, `abc`, []Group{}},
|
||||
{`ab+bc`, nil, `abq`, []Group{}},
|
||||
{`ab+bc`, nil, `abbbbc`, []Group{{0, 6}}},
|
||||
{`ab?bc`, nil, `abbc`, []Group{{0, 4}}},
|
||||
{`ab?bc`, nil, `abc`, []Group{{0, 3}}},
|
||||
{`ab?bc`, nil, `abbbbc`, []Group{}},
|
||||
{`ab?c`, nil, `abc`, []Group{{0, 3}}},
|
||||
{`^abc$`, nil, `abc`, []Group{{0, 3}}},
|
||||
{`^abc$`, nil, `abcc`, []Group{}},
|
||||
{`^abc`, nil, `abcc`, []Group{{0, 3}}},
|
||||
{`^abc$`, nil, `aabc`, []Group{}},
|
||||
{`abc$`, nil, `aabc`, []Group{{1, 4}}},
|
||||
{`^`, nil, `abc`, []Group{{0, 0}}},
|
||||
{`$`, nil, `abc`, []Group{{3, 3}}},
|
||||
{`a.c`, nil, `abc`, []Group{{0, 3}}},
|
||||
{`a.c`, nil, `axc`, []Group{{0, 3}}},
|
||||
{`a.*c`, nil, `axyzc`, []Group{{0, 5}}},
|
||||
{`a.*c`, nil, `axyzd`, []Group{}},
|
||||
{`a[bc]d`, nil, `abc`, []Group{}},
|
||||
{`a[bc]d`, nil, `abd`, []Group{{0, 3}}},
|
||||
{`a[b-d]e`, nil, `abd`, []Group{}},
|
||||
{`a[b-d]e`, nil, `ace`, []Group{{0, 3}}},
|
||||
{`a[b-d]`, nil, `aac`, []Group{{1, 3}}},
|
||||
{`a[-b]`, nil, `a-`, []Group{{0, 2}}}, // If a character class has a hyphen without a start or end character, it is treated as a literal hyphen
|
||||
{`a[\-b]`, nil, `a-`, []Group{{0, 2}}},
|
||||
{`a[b-]`, nil, `a-`, []Group{{0, 2}}}, // If a character class has a hyphen without a start or end character, it is treated as a literal hyphen
|
||||
|
||||
{`a[]b`, nil, `-`, nil},
|
||||
{`a[`, nil, `-`, nil},
|
||||
{`a\`, nil, `-`, nil},
|
||||
{`abc)`, nil, `-`, nil},
|
||||
{`(abc`, nil, `-`, nil},
|
||||
{`a]`, nil, `a]`, []Group{{0, 2}}},
|
||||
|
||||
// Todo - add numeric range tests
|
||||
}
|
||||
@@ -223,7 +274,7 @@ func TestFindAllMatches(t *testing.T) {
|
||||
regComp, err := Compile(test.re, test.flags...)
|
||||
if err != nil {
|
||||
if test.result != nil {
|
||||
panic(err)
|
||||
panic(fmt.Errorf("Test Error: %v", err))
|
||||
}
|
||||
} else {
|
||||
matchIndices := FindAllMatches(regComp, test.str)
|
||||
@@ -242,7 +293,7 @@ func TestFindAllMatches(t *testing.T) {
|
||||
func TestFindString(t *testing.T) {
|
||||
for _, test := range reTests {
|
||||
t.Run(test.re+" "+test.str, func(t *testing.T) {
|
||||
regComp, err := Compile(test.re)
|
||||
regComp, err := Compile(test.re, test.flags...)
|
||||
if err != nil {
|
||||
if test.result != nil {
|
||||
panic(err)
|
||||
@@ -267,7 +318,7 @@ func TestFindString(t *testing.T) {
|
||||
func TestFindAllGroups(t *testing.T) {
|
||||
for _, test := range groupTests {
|
||||
t.Run(test.re+" "+test.str, func(t *testing.T) {
|
||||
regComp, err := Compile(test.re)
|
||||
regComp, err := Compile(test.re, test.flags...)
|
||||
if err != nil {
|
||||
if test.result != nil {
|
||||
panic(err)
|
||||
|
Reference in New Issue
Block a user